PHP中是否有等效的Java HashMap?

2022-08-30 07:49:02

我需要类似于Java中的HashMap的PHP对象,但是当我谷歌搜索时我没有找到,所以如果有人知道如何在PHP中模仿HashMaps,将不胜感激。


答案 1

PHP 中的数组可以具有键值结构。


答案 2

在 PHP 中创建一个像 HashMap 一样的 Java,具有 O(1) 读取复杂性。

打开一个 phpsh 终端:

php> $myhashmap = array();
php> $myhashmap['mykey1'] = 'myvalue1';
php> $myhashmap['mykey2'] = 'myvalue2';
php> echo $myhashmap['mykey2'];
myvalue2

在这种情况下,的复杂性似乎是恒定时间O(1),这意味着当$myhasmap的大小接近无穷大时,给定键检索值所需的时间保持不变。$myhashmap['mykey2']

php 数组读取的证据是常量时间:

通过 PHP 解释器运行此命令:

php> for($x = 0; $x < 1000000000; $x++){
 ... $myhashmap[$x] = $x . " derp";
 ... }

该循环添加了10亿个键/值,将它们全部添加到哈希图大约需要2分钟,这可能会耗尽您的内存。

然后查看执行查找需要多长时间:

php> system('date +%N');echo "  " . $myhashmap[10333] . "  ";system('date +%N');
786946389  10333 derp  789008364

那么PHP数组映射查找的速度有多快呢?

这是我们查找的关键。100 万纳秒 == 1 毫秒。从密钥获取值所需的时间为 206 万纳秒或约 2 毫秒。如果数组为空,则时间大致相同。对我来说,这看起来像是恒定的时间。10333


推荐