PHP: Direkter Zugriff auf Array-Rückgabe einer Funktion?

13.12.2011 15:32 Uhr

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'];

?

5 Antworten

#1

14.12.2011 10:56 Uhr

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

#2

14.12.2011 10:57 Uhr

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

#3

14.12.2011 11:00 Uhr

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.

#4

14.12.2011 11:02 Uhr

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;

?>

#5

01.02.2012 19:17 Uhr

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');

 

 

Ähnliche Fragen



Datenschutzerklärung · Impressum