Me gustaría poder pasar una matriz a una función y hacer que la función se comporte de manera diferente dependiendo de si es una matriz de estilo "lista" o un estilo "hash" formación. Ej .: salidaDeterminar si una matriz es asociativa (hash) o no
myfunc(array("One", "Two", "Three")); // works
myfunc(array(1=>"One", 2=>"Two", 3=>"Three")); also works, but understands it's a hash
Poder algo como:
One, Two, Three
1=One, 2=Two, 3=Three
es decir: la función hace algo diferente cuando se "detecta" que está siendo pasado un hash en lugar de una matriz. ¿Puedes decir que procedo de un fondo Perl donde% hashes son referencias diferentes de @arrays?
Creo que mi ejemplo es significativo porque no podemos simplemente probar para ver si la clave es numérica, porque podría estar usando claves numéricas en su hash.
estoy buscando específicamente para evitar tener que utilizar el constructo más desordenado de myfunc(array(array(1=>"One"), array(2=>"Two"), array(3=>"Three")))
Buscando algo como esto? http://stackoverflow.com/questions/173400/php-arrays-a-good-way-to-check-if-an-array-is-associative-or-sequential –
Pregunta interesante. PHP desafortunadamente no distingue 'array ('a', 'b', 'c')' de 'array (0 => 'a', 1 => 'b', 2 => 'c')' ... – Tadeck
PHP siempre almacenará las teclas numéricas 'array (" 1 "=>" 1 ")' como números enteros. No puedo detectar eso. Solo puede buscar claves de crecimiento continuo para diferenciar listas verdaderas de matrices indexadas. – mario