Il tipo di array PHP è in realtà più simile a una mappa ordinata che a un array C tradizionale. È la struttura dati originale di utilizzo generale di PHP. Il manuale va al punto The indexed and associative array types are the same type in PHP, which can both contain integer and string indices.Quali sono le differenze pratiche tra le matrici "associate" e "indicizzate" in PHP?
Tuttavia, ci sono molti casi in cui le funzionalità del linguaggio incorporato fanno una distinzione tra array "indicizzati" (array con chiavi sequenziali, integer) e array "associativi" (array con non sequenziali e/o chiavi di tipi misti).
Un esempio di questa è la funzione array_merge.
Se gli array di input hanno gli stessi tasti stringa, il valore successivo per quel tasto sovrascriverà quello precedente. Se, tuttavia, gli array contengono chiavi numeriche, il valore successivo non sovrascriverà il valore originale, ma verrà aggiunto.
Se viene fornito solo un array e l'array viene indicizzato numericamente, i tasti vengono reindirizzati in modo continuo.
Quali sono gli altri posti in PHP in cui viene fatta una distinzione tra array indicizzati e associativi? Sono interessato in particolare alle differenze Userland, anche se qualsiasi approfondimento sull'implementazione dell'array nella sorgente di PHP sarebbe interessante.
+1 per buone informazioni, ma è opportuno notare che è possibile eseguire il loop su un array indicizzato e un array associato utilizzando la funzione next(). In altre parole, gli array associativi hanno ancora un concetto interno di ordine. –
Vero, e lungo quelle linee, un array indicizzato non ha necessariamente l'ordine previsto - piuttosto, l'ordine che usa l'array (con 'foreach' o' next() ', attenzione) dipende dall'ordine in cui era popolato, quindi se $ arr [3] è stato impostato prima di $ arr [2], quell'ordine verrà mantenuto quando viene ripetuto l'iterazione. –