2012-07-14 20 views

risposta

9

Sì, mantiene l'ordine. puoi pensare agli array di php come ordered hash maps.

Si può pensare agli elementi ordinati per "tempo di creazione dell'indice". Per esempio

$a = array(); 
$a['x'] = 1; 
$a['y'] = 1; 
var_dump($a); // x, y 

$a = array(); 
$a['x'] = 1; 
$a['y'] = 1; 
$a['x'] = 2; 
var_dump($a); // still x, y even though we changed the value associated with the x index. 

$a = array(); 
$a['x'] = 1; 
$a['y'] = 1; 
unset($a['x']); 
$a['x'] = 1; 
var_dump($a); // y, x now! we deleted the 'x' index, so its position was discarded, and then recreated 

In sintesi, se si sta aggiungendo una voce in cui un doesnt chiave attualmente esistenti nella matrice, la posizione della voce sarà la fine della lista. Se stai aggiornando una voce per una chiave esistente, la posizione è invariata.

foreach loop su array utilizzando l'ordine naturale sopra illustrato. È inoltre possibile utilizzare current() () () () e amici, se lo si desidera, anche se vengono utilizzati raramente da quando foreach è stato introdotto nella lingua.

inoltre, print_r() e var_dump() restituiscono i risultati utilizzando l'ordine matrice naturale.

Se hai familiarità con Java, LinkedHashMap è la struttura dati più simile.

Problemi correlati