В PHP ассоциативные массивы реализованы в виде хеш-таблиц с небольшой дополнительной функциональностью.
Однако, с технической точки зрения, ассоциативный массив не идентичен хеш-таблице - он просто реализован врасстаться с хэш-таблицей.Поскольку большая часть его реализации является хеш-таблицей, она может делать все, что может хеш-таблица, но она может делать и больше.
Например, вы можете перебирать ассоциативный массив с помощью цикла for, который вы можете 'Это невозможно сделать с хеш-таблицей.
Так что, хотя они и похожи, ассоциативный массив может на самом деле надмножество того, что может делать хеш-таблица - так что это не совсем одно и то же.Думайте об этом как о хеш-таблицах плюс дополнительная функциональность.
Примеры кода:
Использование ассоциативного массива в качестве хеш-таблицы :
$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
Цикл по ассоциативному массиву :
$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
Обратите особое внимание на то, как во втором примере поддерживается порядок каждого элемента (Тайлер, Билл Марк) на основе порядка, в котором они были введены вмассив.В этом основное различие между ассоциативными массивами и хеш-таблицами.Хеш-таблица не поддерживает связь между элементами, которые она содержит, в то время как ассоциативный массив PHP поддерживает (вы даже можете отсортировать ассоциативный массив PHP).