tesis sobre sirve que para libros investigaciones investigacion historia caracteristicas php arrays coding-style

sirve - PHP: valor de matriz de acceso sobre la marcha



tesis sobre youtube pdf (8)

En php, a menudo necesito mapear una variable usando una matriz ... pero parece que no puedo hacer esto en un trazador de líneas. cf ejemplo:

// the following results in an error: echo array(''a'',''b'',''c'')[$key]; // this works, using an unnecessary variable: $variable = array(''a'',''b'',''c''); echo $variable[$key];

Este es un problema menor, pero sigue molestando de vez en cuando ... No me gusta el hecho de que use una variable para nada;)


Esto podría no estar directamente relacionado ... Pero llegué a esta solución de búsqueda de publicaciones para este problema específico.

Obtuve un resultado de una función en la siguiente forma.

Array ( [School] => Array ( [parent_id] => 9ce8e78a-f4cc-ff64-8de0-4d9c1819a56a ) )

lo que quería era el valor parent_id "9ce8e78a-f4cc-ff64-8de0-4d9c1819a56a". Usé la función de esta manera y la obtuve.

array_pop( array_pop( the_function_which_returned_the_above_array() ) )

Entonces, fue hecho en una línea :) Espero Sería útil para alguien.


Esto se llama eliminación de referencias de matriz. Se ha agregado en php 5.4. http://www.php.net/releases/NEWS_5_4_0_alpha1.txt

actualización [2012-11-25]: a partir de PHP 5.5, la eliminación de referencias se ha agregado a contants / strings, así como a matrices


Hay varios rellenadores de líneas que podría encontrar, usando las funciones php array_ * . Pero te aseguro que hacerlo es totalmente redundante al comparar lo que quieres lograr.

Por ejemplo, puedes usar algo como seguir, pero no es una solución elegante y no estoy seguro del rendimiento de esto;

array_pop ( array_filter( array_returning_func(), function($key){ return $key=="array_index_you_want"? TRUE:FALSE; },ARRAY_FILTER_USE_KEY ) );

si está utilizando un marco de php y está atrapado con una versión anterior de php, la mayoría de los marcos tienen bibliotecas de ayuda.

ejemplo: Codeigniter array helpers


La respuesta técnica es que la Gramática del lenguaje PHP solo permite la notación de los subíndices al final de las expresiones de las variables y no las expresiones en general, que es como funciona en la mayoría de los otros idiomas. Siempre lo he visto como una deficiencia en el lenguaje, porque es posible tener una gramática que resuelva subíndices contra cualquier expresión de forma inequívoca. Podría ser el caso, sin embargo, de que estén utilizando un generador de analizador inflexible o simplemente no quieran romper algún tipo de compatibilidad hacia atrás.

Aquí hay un par de ejemplos más de subíndices no válidos en expresiones válidas:

$x = array(1,2,3); print ($x)[1]; //illegal, on a parenthetical expression, not a variable exp. function ret($foo) { return $foo; } echo ret($x)[1]; // illegal, on a call expression, not a variable exp.


No me molestaría sobre esa variable extra, realmente. Si lo desea, también puede eliminarlo de la memoria después de haberlo usado:

$variable = array(''a'',''b'',''c''); echo $variable[$key]; unset($variable);

O bien, podría escribir una pequeña función:

function indexonce(&$ar, $index) { return $ar[$index]; }

y llama esto con:

$something = indexonce(array(''a'', ''b'', ''c''), 2);

La matriz debería destruirse automáticamente ahora.


O algo como esto, si necesita el valor de matriz en una variable

$variable = array(''a'',''b'',''c''); $variable = $variable[$key];


en realidad, hay una solución elegante :) Lo siguiente asignará el tercer elemento de la matriz devuelta por myfunc a $ myvar:

$myvar = array_shift(array_splice(myfunc(),2));


function doSomething() { return $somearray; } echo doSomething()->get(1)->getOtherPropertyIfThisIsAnObject();