2012-08-11 11 views
14

Tengo una función que devuelve una matriz. Tengo otra función que sólo devuelve la primera fila, pero por alguna razón, me hace uso una variable intermedia, es decir, esta falla:PHP Array Syntax Parse Error Left Square Bracket "["

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

. . . con:

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

embargo, esto funciona:

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

yo no era capaz de encontrar algo que sea pertinente en línea (mis búsquedas hacía cada vez confundidos por las personas con "{", "< "?" ", etc.).

Soy autodidacta en PHP. ¿Hay alguna razón por la que no puedo hacer esto directamente que me he perdido?

+1

posible duplicado de [¿Es posible hacer referencia a un elemento específico de una matriz anónima en PHP?] (Http : //stackoverflow.com/questions/8276224/is-it-possible-to-reference-a-specific-element-of-an-anonymous-array-in-php) – DCoder

+1

posible duplicado de [Acceda al elemento de matriz de PHP con un función?] (http://stackoverflow.com/questions/396519/access-php-array-element-with-a-function) –

+0

El idioma do no lo permite hasta 5.4.0 –

Respuesta

25

No se puede utilizar la función de eliminación de referencias gama

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

hasta PHP 5.4.0 y superiores.

+0

Ross lo consiguió primero. Gracias, – imallett

+1

accesorios para revelar el término adecuado para esto, terminó una larga búsqueda de lo que debería haber sido una pregunta simple. –

2

El motivo de este comportamiento es que las funciones de PHP no se pueden encadenar como pueden ser las funciones de JavaScript. Al igual que document.getElementsByTagNames('a')[0] es posible.

Usted tiene que atenerse a la segunda aproximación para la versión de PHP < 5,4

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

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