2012-06-27 11 views
39

Mi matriz se ve así:claves de matriz PHP reordenar

array(
    0 => 'val', 
    2 => 'val', 
    3 => 'val', 
    5 => 'val', 
    7 => 'val' 
); 

¿Cómo puedo cambiar el orden de las claves por lo que irá como 0, 1, 2, 3, 4?

Respuesta

88

Uso array_values:

$reindexed_array = array_values($old_array); 
+1

¡perfecto! parece hacer el trabajo – fxuser

+0

valores de matriz, aunque son válidos, no es lo que recomendaría. Internamente, llama al constructor de la matriz y devuelve una nueva matriz. usar sort es por lo tanto (marginalmente) más rápido, y más corto para escribir, también –

+0

no necesito usar otra matriz ... simplemente array_values ​​() la actual – fxuser

8

Mediante el uso de sort($array);

documentación Ver here PHP.

Recomendaría sort sobre array_values ya que no creará una segunda matriz. Con el siguiente código, ahora tiene dos matrices que ocupan espacio: $ reindexed_array y $ old_array. Innecesario.

$reindexed_array = array_values($old_array);

+0

¿Cómo está mi respuesta incorrecta? ordenar volverá a activar la clave y ordenar la matriz, como él ha pedido. – Rawkode

+0

parece hacer bien el trabajo – fxuser

+0

@Rawkode ¿por qué array_values ​​crea otra matriz si hago array_values ​​() la matriz actual? parece que funciona de esa manera también – fxuser

12
array_splice($old_array, 0, 0); 

No clasificará matriz y no va a crear una segunda matriz

+0

Simple y perfecto, ya que no crea una segunda matriz y no modifica el orden de los valores ... ¡thx! –

0
array_splice($jam_array, 0, count($jam_array)); 

Para ordenar un arreglo al que le faltan los índices intermedios, con cuenta el orden i es más seguro Entonces 0 es el primer índice y count($jam_array) o sizeof($jam_array) devuelve la posición decimal de la matriz, a saber, el último índice.

Cuestiones relacionadas