我偶然发现了一些文章(例如this one)以及建议PHP in_array()
遍历整个数组的信息。
现在这个问题可能有重复:How does PHP's in_array function work?但是OP显然对C语言函数定义的复制/粘贴感到满意,没有进一步的描述......
我的问题是:
in_array()
真的是否通过整个数组?我试图进一步观察并追踪ZEND_HASH_FOREACH_KEY_VAL
,但后来有点混乱:
php_search_array()
... PHP中的in_arary()
ZEND_HASH_FOREACH_KEY_VAL
and ZEND_HASH_FOREAC
我唯一确定的是,自迭代以来?发生在" C级"它应该比"手动"更快foreach
...
答案 0 :(得分:1)
PHP的in_array真的可以通过整个数组吗?
TLDR; 不,不。
我阅读C实现的方式:
回答你的问题:
php_search_array要么调用Zend RETURN_TRUE (impl:https://github.com/php/php-src/blob/master/Zend/zend_API.h),要么设置 RET_VAL 并执行C返回;然后。在这两种情况下,如果找到匹配项,C执行就会突破数组的迭代。