在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
特别注意在第二个例子中,每个元素的顺序是根据它们输入数组的顺序而保持的(Tyler,Bill Marc)。 这是关联数组和哈希表之间的主要区别。 哈希表在它保存的项之间不保持连接,而PHP关联数组则保持连接(你甚至可以对PHP关联数组进行排序)。