PHP: Direkter Zugriff auf Array-Rückgabe einer Funktion? Frage PHP: Direkter Zugriff auf Array-Rückgabe einer Funktion? zu Favoriten hinzufügen

Daumen hoch 0 Daumen runter

Hallo,

nehmen wir an eine PHP-Funktion gibt ein Array zurück und ich möchte auf einen Wert dieses Arrays zugreifen um ihn auszugeben, in etwa so:

$info = get_info($page);
echo $info['url'];

Gibt es eine Möglichkeit, direkt auf das zurückgegebene Array zuzugreifen, z.B. so:

echo get_info($page)['url'];

?

Antworten


Diese Antwort als GUT bewerten 3 Diese Antwort als SCHLECHT bewerten

Meines Erachtens nicht. Du könntest allerdings das Array beim Zurückgeben in ein Standardobjekt casten und dann direkt auf die Objektvariable zugreifen:

function get_info()
{
     return (object) array(
          'url' => 'http://www.google.de'
     );
}
echo get_info()->url;

Wobei es natürlich sauberer ist, erst mal die Rückgabe in eine Zwischenvariable zu speichern und zu überprüfen, ob die Rückgabe überhaupt das liefert , was ich erwarte.

Schöne Lösung, Danke!

martin am 14.12.2011
Diese Antwort als GUT bewerten 1 Diese Antwort als SCHLECHT bewerten

Direkt ist das nicht möglich. Aber was spricht dagegen das array zu einem Objekt zu casten und dann mit dem Verweißoperator zu arbeiten?

<?php

function get_info() {
    return (object)array( 'url' => 'http://www.google.de' );
}

echo get_info()->a;

?>
Diese Antwort als GUT bewerten 1 Diese Antwort als SCHLECHT bewerten

Was Du meinst ist sogenanntes Array Dereferencing, welches (wie Alex schon schrieb) mit PHP 5.4 kommt.

Dumme Frage, aber wofür willst Du das ganze einsetzen und hast Du Einfluss auf den Inhalt der Funktion get_info? Wenn Du einfach eine kürzere Schreibweise für den Zugriff willst, würde ich die Funktion mit einem optionalen Parameter versehen und immer wenn dieses angegeben wurde nur den Inhalt dieses Keys zurückgeben.

function get_info($params, $key = null) {
    // Code zur Ermittlung der Infos auf Basis von $params
    $info = (...);
    
    $ret = $info;
    if ($key) {
        $ret = $info[$key];
    }

    return $ret;
}

echo get_info($page, 'url');

 

 

Oh ja, das ist auch eine sehr gute Idee!

martin am 02.02.2012
Diese Antwort als GUT bewerten 0 Diese Antwort als SCHLECHT bewerten

Leider erst ab PHP 5.4. Im Moment musst du das Ergebnis in einer Variable zwischenspeichern.

Diese Antwort als GUT bewerten 0 Diese Antwort als SCHLECHT bewerten

Soweit mir bekannt ist, geht das nicht, nein. Aber ich lasse mich gerne eines besseren belehren ;-)

Deine Antwort

Registrierter User Bereits registriert? Bitte logge dich vor dem Antworten ein.

Deine Daten