Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php isset运算的大O表示法_Php_Big O - Fatal编程技术网

Php isset运算的大O表示法

Php isset运算的大O表示法,php,big-o,Php,Big O,具有阵列的: $array = (..., 'name' => 'foo', 'age' => 69, 'address' => 'bar'); 我将使用以下操作: if(isset($array['address'])) { //Do something... } 大O表示法是O(n)吗?isset()在幕后是如何工作的?正如马克·贝克所说,它是O(1)。但是,请注意,这只是一般情况 事实上,由于哈希冲突,哈希映射中的搜索操作仍然可能需要O(n)个时间,无论您如何很好地实

具有阵列的:

$array = (..., 'name' => 'foo', 'age' => 69, 'address' => 'bar');
我将使用以下操作:

if(isset($array['address'])) { //Do something... }

大O表示法是O(n)吗?isset()在幕后是如何工作的?

正如马克·贝克所说,它是O(1)。但是,请注意,这只是一般情况

事实上,由于哈希冲突,哈希映射中的搜索操作仍然可能需要O(n)个时间,无论您如何很好地实现哈希映射(链接、探测等)


尽管如此,这并不意味着哈希表在实践中是不好的。事实上,大O只是一种通常用来描述算法最坏情况的东西。

数组是一个哈希映射,所以它是O(1),因为PHP所要做的就是生成哈希并查看该哈希入口点是否有任何值。。。。它不必遍历数组(不管怎么说,它将被描述为O(n)而不是O(3)),谢谢您的评论!如果它是一个像$var=2这样的变量,它如何在内存中检查它是否存在?它又是一个简单的O(1)。。。。变量已定义或未定义。。。。通过检查PHP源代码,您可以确切地看到它在幕后是如何工作的