2011-09-22 1 views

risposta

5

Ecco come funzionano gli array PHP. Ogni coppia chiave/valore ha un numero ordinale, quindi viene ricordato l'ordine di inserimento. Si può facilmente verificare voi stessi:

http://ideone.com/sXfeI

+3

Ah, ma si può, ad esempio, inserire un elemento prima di un altro elemento senza cancellare/ri-aggiungendo elementi * * in massa? –

+3

Purtroppo no. Per fare qualcosa come te dovresti mantenere una matrice indicizzata numerica, quindi puoi usare funzioni come 'array_splice' da inserire a offset casuali. E se devi anche essere in grado di accedere agli elementi attraverso una chiave di dizionario, avrai probabilmente bisogno di una sorta di array di mappatura, che mappi le chiavi dict ai loro valori corrispondenti nella matrice indicizzata. –

3

Se ho capito la descrizione nei documenti pitone correttamente, allora sì. Gli array PHP sono in realtà solo mappe ordinate:

Una matrice in PHP è in realtà una mappa ordinata. Una mappa è un tipo che associa valori a chiavi. Questo tipo è ottimizzato per diversi usi; può essere trattato come una matrice, lista (vettore), tabella hash (un'implementazione di una mappa), dizionario, raccolta, stack, coda e probabilmente di più. Poiché i valori dell'array possono essere altri array, sono anche possibili alberi e array multidimensionali.

PHP Array docs

+0

Cosa succede quando si inserisce una chiave già esistente? Sembra che lasci la chiave, ma è garantita? http://ideone.com/iTVMW – Casebash

+1

Sostituisce il valore dell'offset in cui si trova già. –

2

array PHP funzionano in questo modo per impostazione predefinita.

$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