En PHP, las matrices asociativas se implementan como tablas hash, con un poco de funcionalidad adicional.
Sin embargo, técnicamente hablando, una matriz asociativa no es idéntica a una tabla hash, simplemente se implementa en parte con una tabla hash detrás de escena. Debido a que la mayor parte de su implementación es una tabla hash, puede hacer todo lo que puede hacer una tabla hash, pero también puede hacer más.
Por ejemplo, puede recorrer una matriz asociativa usando un bucle for, lo que no puede hacer con una tabla hash.
Entonces, aunque son similares, una matriz asociativa puede hacer un superconjunto de lo que puede hacer una tabla hash, por lo que no son exactamente lo mismo. Piense en ello como tablas hash más una funcionalidad adicional.
Ejemplos de código:
Usando una matriz asociativa como una tabla hash :
$favoriteColor = array();
$favoriteColor['bob']='blue';
$favoriteColor['Peter']='red';
$favoriteColor['Sally']='pink';
echo 'bob likes: '.$favoriteColor['bob']."\n";
echo 'Sally likes: '.$favoriteColor['Sally']."\n";
Bucle a través de una matriz asociativa :
$idTable=array();
$idTable['Tyler']=1;
$idTable['Bill']=20;
$idTable['Marc']=4;
foreach($idTable as $person=>$id)
echo 'id: '.$id.' | person: '.$person."\n";
Observe especialmente cómo en el segundo ejemplo, el orden de cada elemento se mantiene (Tyler, Bill Marc) según el orden en el que se ingresaron en la matriz. Esta es una gran diferencia entre matrices asociativas y tablas hash. Una tabla hash no mantiene ninguna conexión entre los elementos que contiene, mientras que una matriz asociativa PHP sí lo hace (incluso puede ordenar una matriz asociativa PHP).