2012-08-11 2 views
14

Ich habe eine Funktion, die ein Array zurückgibt. Ich habe eine andere Funktion, die nur die erste Zeile zurückgibt, aber aus irgendeinem Grund, es macht mir eine Zwischengröße verwenden, das heißt das nicht klappt:PHP Array Syntax Parse Fehler Left Square Bracket "["

function f1(/*some args*/) { 
    return /*an array*/; 
} 
function f2(/*some args*/) { 
    return f1(/*some args*/)[0]; 
} 

. . . mit:

Parse error: syntax error, unexpected '[' in util.php on line 10

Aber das funktioniert:

function f1(/*some args*/) { 
    return /*an array*/; 
} 
function f2(/*some args*/) { 
    $temp = f1(/*some args*/); 
    return $temp[0]; 
} 

ich nicht in der Lage war alles andere relevante online (meine Suche von Menschen wurde immer verwirrt zu finden, mit "{", "< "?" ", etc.).

Ich bin Autodidakt in PHP - gibt es einen Grund, warum ich das nicht direkt machen kann, dass ich verpasst habe?

+1

möglich Duplikat mit dem zweiten Ansatz zu bleiben [Ist es möglich, ein bestimmtes Element eines anonymen Array in PHP zu verweisen?] (Http : //stackoverflow.com/questions/8276224/is-it-possible-to-reference-a-specific-element-of-ananonymous-array-in-php) – DCoder

+1

möglich Duplikat von [Access PHP-Array-Element mit einem Funktion?] (http://stackoverflow.com/questions/396519/access-php-array-element-with-a-function) –

+0

Die Sprache tun es nicht erlaubt bis 5.4.0 –

Antwort

25

Sie können nicht Funktion Array verwenden dereferencing

return f1(/*some args*/)[0]; 

bis PHP 5.4.0 und höher.

+0

Ross bekam es zuerst. Danke, – imallett

+1

Requisiten für die Aufdeckung der richtigen Bezeichnung dafür, es endete eine lange Suche nach was sollte eine einfache Frage gewesen sein. –

2

Der Grund für dieses Verhalten ist, dass PHP-Funktionen nicht verkettet werden können wie JavaScript-Funktionen sein können. Genau wie document.getElementsByTagNames('a')[0] ist möglich.

Sie haben für die PHP-Version < 5,4

Function array dereferencing has been added, e.g. foo()[0].

http://php.net/manual/en/migration54.new-features.php