首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >哈希表与关联数组

哈希表与关联数组
EN

Stack Overflow用户
提问于 2010-06-28 16:38:16
回答 5查看 77.8K关注 0票数 89

最近,我在一本非常有名的书“”中读到了关于哈希表的文章。我还没有在任何真正的应用程序中使用它们,但我想使用。但我不知道怎么开始。

有人能给我一些使用它的示例吗,例如,如何使用哈希表来实现字典应用程序(比如ABBYY )?

最后,我想知道PHP中哈希表和关联数组之间的区别是什么,我的意思是我应该使用哪种技术,在什么情况下使用呢?

如果我错了(请原谅),请纠正我,因为实际上我是从散列表开始的,而且我对它们只有基本的(理论)知识。

非常感谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-06-28 16:40:41

在PHP中,关联数组被实现为哈希表,并带有一些额外的功能。

然而,从技术上讲,关联数组与哈希表并不完全相同--它只是部分地通过幕后的哈希表来实现。因为它的大多数实现都是哈希表,所以它可以完成哈希表所能做的一切--但它也可以做更多的事情。

例如,您可以使用For循环遍历关联数组,这是哈希表无法执行的。

因此,虽然它们是相似的,但关联数组实际上可以执行哈希表所能做的超集,因此它们不是完全相同的事情。把它看作是哈希表加上额外的功能。

代码示例:

使用关联数组作为哈希表

代码语言:javascript
运行
复制
$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

循环通过关联数组

代码语言:javascript
运行
复制
$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关联数组进行排序)。

票数 132
EN

Stack Overflow用户

发布于 2010-06-28 16:39:21

php数组基本上是哈希表。

票数 23
EN

Stack Overflow用户

发布于 2010-06-28 17:36:53

关联数组和哈希表的区别在于关联数组是数据类型,而哈希表是数据实现。显然,在许多当前的编程语言中,关联数组类型非常重要: Perl、Python、PHP等。哈希表是实现关联数组的主要方法,但不是唯一的方法。关联数组是哈希表的主要用途,但并不是唯一的用途。所以这并不是说它们是相同的,但是如果您已经有了关联数组,那么您通常不应该担心它们之间的区别。

出于性能原因,重要的是要知道您喜欢的语言中的关联数组是以散列的形式实现的。对实现的开销有一些了解可能是很重要的。哈希表比线性数组使用的内存更慢,在C中可以看到它们。

Perl通过调用关联数组“散列”将这两个概念合并在一起。就像Perl的许多特性一样,它不是完全错误的,但它是草率的。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3134296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档