2010-04-22 4 views
5

Supposons que vous avez un tableau associatifQuelle est la manière la plus élégante de réorganiser un tableau associatif?

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

et vous ne pouvez pas changer l'ordre dans lequel ces variables sont créées. Donc Car est toujours ajouté au tableau après Nom, etc. Quelle est la plus belle façon d'ajouter/déplacer Car au début du tableau associatif au lieu de la fin (par défaut)?

+0

que vous essayez de trier le tableau? – Galen

+0

et essayez-vous de le trier par ordre alphabétique? ou voulez-vous seulement pousser la voiture vers le haut en laissant tous les autres éléments intacts? – webbiedave

+0

Quelle phrase est-ce? – webbiedave

Répondre

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

Hé, les grands esprits * pensent * de la même façon: D Voir ma réponse pour la version variable. – erisco

2

ksort()?

Mais pourquoi vous soucier de l'ordre interne du tableau?

+0

Je pense qu'il demande une poussée sur le début du tableau, c'est un bon indice, bien que –

+0

je pensais à cela mais figurais avec ses données réelles cette solution très indirecte ne fonctionnerait pas toujours. – erisco

+0

Dans ce cas, je vais faire une boucle sur le tableau avec foreach() plus tard, et à des fins d'affichage, je veux que certaines valeurs apparaissent en haut. –

1
array_reverse($hash, true); 

Ce n'est pas une solution très directe mais qui est:

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

oui, j'ai lu ceci ;-) excellent moyen de déplacer l'élément qui a déjà été ajouté à un tableau. – zerkms

0

Une autre astuce est -

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

Vous pouvez re organiser les nouvelles clés du tableau aussi. voiture d'abord, puis une autre Supposons que le terrain (par exemple Id) puis tableau demeurent donc ....

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

Le tableau deviendra comme

$hash['Car'] = 'Ford'; 
$hash['Id'] = 'New Id'; 
$hash['Fruit'] = 'Apple'; 
$hash['Name'] = 'Jeff'; 
Questions connexes