最近,我在一本非常有名的书“”中读到了关于哈希表的文章。我还没有在任何真正的应用程序中使用它们,但我想使用。但我不知道怎么开始。
有人能给我一些使用它的示例吗,例如,如何使用哈希表来实现字典应用程序(比如ABBYY )?
最后,我想知道PHP中哈希表和关联数组之间的区别是什么,我的意思是我应该使用哪种技术,在什么情况下使用呢?
如果我错了(请原谅),请纠正我,因为实际上我是从散列表开始的,而且我对它们只有基本的(理论)知识。
非常感谢。
发布于 2010-06-28 16:40:41
在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特别要注意的是,在第二个示例中,如何根据输入数组的顺序来维护每个元素的顺序(泰勒、Bill )。这是关联数组和哈希表之间的一个主要区别。哈希表在它所持有的项之间不保持连接,而PHP关联数组则保持连接(您甚至可以对PHP关联数组进行排序)。
发布于 2010-06-28 16:39:21
php数组基本上是哈希表。
发布于 2010-06-28 17:36:53
关联数组和哈希表的区别在于关联数组是数据类型,而哈希表是数据实现。显然,在许多当前的编程语言中,关联数组类型非常重要: Perl、Python、PHP等。哈希表是实现关联数组的主要方法,但不是唯一的方法。关联数组是哈希表的主要用途,但并不是唯一的用途。所以这并不是说它们是相同的,但是如果您已经有了关联数组,那么您通常不应该担心它们之间的区别。
出于性能原因,重要的是要知道您喜欢的语言中的关联数组是以散列的形式实现的。对实现的开销有一些了解可能是很重要的。哈希表比线性数组使用的内存更慢,在C中可以看到它们。
Perl通过调用关联数组“散列”将这两个概念合并在一起。就像Perl的许多特性一样,它不是完全错误的,但它是草率的。
https://stackoverflow.com/questions/3134296
复制相似问题