In PHP, gli array associativi sono implementati come tabelle hash, con un po 'di funzionalità extra.
Tuttavia, tecnicamente parlando, un array associativo non è identico a una tabella hash: è semplicemente implementato in parte con una tabella hash dietro le quinte. Poiché la maggior parte della sua implementazione è una tabella hash, può fare tutto ciò che può fare una tabella hash, ma può fare anche di più.
Ad esempio, puoi eseguire il ciclo attraverso un array associativo utilizzando un ciclo for, cosa che non puoi fare con una tabella hash.
Quindi, sebbene siano simili, un array associativo può effettivamente fare un superset di ciò che può fare una tabella hash, quindi non sono esattamente la stessa cosa. Consideralo come tabelle hash più funzionalità extra.
Esempi di codice:
Utilizzo di un array associativo come tabella hash :
$favoriteColor = array();
$favoriteColor['bob']='blue';
$favoriteColor['Peter']='red';
$favoriteColor['Sally']='pink';
echo 'bob likes: '.$favoriteColor['bob']."\n";
echo 'Sally likes: '.$favoriteColor['Sally']."\n";
Loop attraverso un array associativo :
$idTable=array();
$idTable['Tyler']=1;
$idTable['Bill']=20;
$idTable['Marc']=4;
foreach($idTable as $person=>$id)
echo 'id: '.$id.' | person: '.$person."\n";
Notare in particolare come nel secondo esempio viene mantenuto l'ordine di ogni elemento (Tyler, Bill Marc) in base all'ordine in cui sono stati inseriti nell'array. Questa è una delle principali differenze tra array associativi e tabelle hash. Una tabella hash non mantiene alcuna connessione tra gli elementi che contiene, mentre un array associativo PHP sì (puoi persino ordinare un array associativo PHP).