2012-08-11 13 views
14

Mam funkcję, która zwraca tablicę. Mam inną funkcję, która po prostu zwraca pierwszy wiersz, ale z jakiegoś powodu, to sprawia mi użyć zmiennej pośredniej, czyli to się nie powiedzie:Błąd składni zestawu znaków PHP Błąd w kwadratowym nawiasie kwadratowym "["

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

. . . z:

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

Ale to działa:

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

nie byłem w stanie znaleźć niczego istotne online (moi wyszukiwania prowadzonego przez ludzi coraz mylić z "{", "< "?" ", itp.).

Jestem samoukiem w PHP - czy jest jakiś powód, dla którego nie mogę zrobić tego bezpośrednio, że tęskniłem?

+1

możliwe duplikat [Czy można odwołać się do konkretnego elementu anonimowej tablicy w PHP?] (Http : //stackoverflow.com/questions/8276224/is-it-possible-to-reference-a-specific-element-of-an-anonymous-array-in-php) – DCoder

+1

możliwy duplikat [Uzyskaj element tablicy PHP za pomocą funkcja?] (http://stackoverflow.com/questions/396519/access-php-array-element-with-afunction) –

+0

W języku nie nie pozwalaj na to dopóki 5.4.0 –

Odpowiedz

25

Nie można użyć tablicę funkcji dereferencing

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

PHP 5.4.0 i powyżej.

+0

Ross zrobił to pierwszy. Dzięki, – imallett

+1

rekwizyty do ujawnienia odpowiedniego terminu, zakończyło się długie poszukiwanie tego, co powinno być prostym pytaniem. –

2

Powodem tego zachowania jest to, że funkcje PHP nie mogą być powiązane, tak jak mogą być funkcje JavaScript. Podobnie jak document.getElementsByTagNames('a')[0] jest możliwe.

trzeba trzymać do drugiego podejścia do wersji PHP < 5,4

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

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

Powiązane problemy