2010-04-22 9 views
5

Suponga que tiene una matriz asociativa¿Cuál es la forma más elegante de reorganizar una matriz asociativa?

$hash['Fruit'] = 'Apple'; 
$hash['Name'] = 'Jeff'; 
$hash['Car'] = 'Ford'; 

y no se puede cambiar el orden en el que se crean estas variables. Entonces, Car se agrega siempre a la matriz después de Name, etc. ¿Cuál es la forma más bonita de agregar/mover Car al comienzo de la matriz asociativa en lugar de al final (por defecto)?

+0

estás tratando de ordenar la matriz? – Galen

+0

y ¿está tratando de ordenar por orden alfabético? ¿o solo quieres empujar el auto hacia arriba dejando intactos todos los otros elementos? – webbiedave

+0

¿Qué oración es esa? – webbiedave

Respuesta

8
$hash = array('Car' => 'Ford') + $hash; 
+0

Oigan, las mentes geniales * no * piensan igual: D Consulte mi respuesta para la versión variable. – erisco

2

ksort()?

¿Pero por qué le importaría el orden interno de la matriz?

+0

Creo que está pidiendo un empujón al principio de la matriz, eso es una buena pista, aunque –

+0

pensé en esto, pero con sus datos reales esta solución muy indirecta no siempre funcionaría. – erisco

+0

En este caso, voy a recorrer la matriz con foreach() más tarde, y para mostrarla, quiero que ciertos valores aparezcan en la parte superior. –

1
array_reverse($hash, true); 

Esto no es una solución muy directa, pero uno que es:

$value = end($hash); 
$hash = array(key($hash) => $value) + $hash; 
+0

sí, he leído esto ;-) excelente manera de mover el elemento que ya se ha agregado a una matriz. – zerkms

0

Otro truco es -

$new_items = array('Car' => 'Ford'); 
$hash = array_merge($new_items, $hash); 

Se puede volver a disponer las nuevas claves de matriz también. Supongamos coche primero y luego otro campo (digamos Id) a continuación gama siendo así ....

$new_items = array('Car' => 'Ford','Id'=>'New Id'); 
$hash = array_merge($new_items, $hash); 

La matriz se volverá como

$hash['Car'] = 'Ford'; 
$hash['Id'] = 'New Id'; 
$hash['Fruit'] = 'Apple'; 
$hash['Name'] = 'Jeff'; 
Cuestiones relacionadas