2011-09-22 20 views

Respuesta

5

Así es como las matrices PHP funcionan de la caja. Cada par de clave/valor tiene un número ordinal, por lo que se recuerda el orden de inserción. Se puede probar fácilmente usted mismo:

http://ideone.com/sXfeI

+3

Ah, pero se puede, por ejemplo, insertar un elemento antes de que otro elemento sin borrar/re-añadiendo elementos * * en masa? –

+3

Desafortunadamente no. Para hacer algo así como mantener una matriz indexada numérica, puedes usar funciones como 'array_splice' para insertar en desplazamientos aleatorios. Y si también necesita poder acceder a los elementos a través de una tecla de diccionario, probablemente necesite algún tipo de matriz de asignación, que asigne claves dict a sus valores correspondientes en la matriz indexada. –

3

Si entiendo la descripción en los documentos pitón correctamente, entonces sí. Las matrices PHP son en realidad solo mapas ordenados:

Una matriz en PHP es en realidad un mapa ordenado. Un mapa es un tipo que asocia valores a claves. Este tipo está optimizado para varios usos diferentes; se puede tratar como una matriz, lista (vector), tabla hash (una implementación de un mapa), diccionario, colección, pila, cola y probablemente más. Como los valores de matriz pueden ser otras matrices, también son posibles árboles y matrices multidimensionales.

PHP Array docs

+0

¿Qué sucede cuando inserta una clave que ya existe? Parece dejar la llave en su lugar, pero ¿está eso garantizado? http://ideone.com/iTVMW – Casebash

+1

Reemplaza el valor en el desplazamiento en el que ya se encuentra. –

2

matrices de PHP funcionan de esta manera de forma predeterminada.

$arr = array('one' => 1, 'two' => 2, 'three' => 3, 'four' => 4); 
var_dump($arr); // 1, 2, 3, 4 

unset($arr['three']); 
var_dump($arr); // 1, 2, 4 

$arr['five'] = 5; 
var_dump($arr); // 1, 2, 4, 5 
Cuestiones relacionadas