In PHP werden assoziative Arrays als Hashtabellen mit einigen zusätzlichen Funktionen implementiert.
Technisch gesehen ist ein assoziatives Array jedoch nicht identisch mit einer Hashtabelle - es wird einfach teilweise mit einer Hashtabelle hinter den Kulissen implementiert . Da der größte Teil seiner Implementierung eine Hashtabelle ist, kann sie alles tun, was eine Hashtabelle kann - aber sie kann auch mehr.
Sie können beispielsweise ein assoziatives Array mit einer for-Schleife durchlaufen, was mit einer Hashtabelle nicht möglich ist.
Während sie ähnlich sind, kann ein assoziatives Array tatsächlich eine Obermenge dessen ausführen, was eine Hashtabelle kann - sie sind also nicht genau dasselbe. Stellen Sie sich das als Hashtabellen und zusätzliche Funktionen vor.
Codebeispiele:
Verwenden eines assoziativen Arrays als Hashtabelle :
$favoriteColor = array();
$favoriteColor['bob']='blue';
$favoriteColor['Peter']='red';
$favoriteColor['Sally']='pink';
echo 'bob likes: '.$favoriteColor['bob']."\n";
echo 'Sally likes: '.$favoriteColor['Sally']."\n";
//output: bob likes blue
// Sally likes pink
Durchlaufen eines assoziativen Arrays :
$idTable=array();
$idTable['Tyler']=1;
$idTable['Bill']=20;
$idTable['Marc']=4;
//up until here, we're using the array as a hashtable.
//now we loop through the array - you can't do this with a hashtable:
foreach($idTable as $person=>$id)
echo 'id: '.$id.' | person: '.$person."\n";
//output: id: 1 | person: Tyler
// id: 20 | person: Bill
// id: 4 | person: Marc
Beachten Sie insbesondere, wie im zweiten Beispiel die Reihenfolge der einzelnen Elemente (Tyler, Bill Marc) basierend auf der Reihenfolge beibehalten wird, in der sie in das Array eingegeben wurden. Dies ist ein wesentlicher Unterschied zwischen assoziativen Arrays und Hashtabellen. Eine Hashtabelle behält keine Verbindung zwischen den darin enthaltenen Elementen bei, während dies bei einem assoziativen PHP-Array der Fall ist (Sie können sogar ein assoziatives PHP-Array sortieren).