首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >教义ArrayCollection:为什么它使用isset($this->elements[$key]) \x\x array_key_exists($key,$this->元素):它们不是一回事吗?

教义ArrayCollection:为什么它使用isset($this->elements[$key]) \x\x array_key_exists($key,$this->元素):它们不是一回事吗?
EN

Stack Overflow用户
提问于 2017-01-11 17:30:34
回答 2查看 381关注 0票数 0

稍长标题:P

无论如何,在ArrayCollection类中,Doctrine使用这个语法来检查Collection是否包含给定的键:

代码语言:javascript
复制
public function containsKey($key)
{
    return isset($this->elements[$key]) || array_key_exists($key, $this->elements);
}

参考这里

为什么使用issetarray_key_exists?在这个用例中,它们不是一回事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-11 17:36:23

答案是,不。他们不一样。来自文档

isset()不返回对应于值的数组键的,而array_key_exists()则返回。

票数 0
EN

Stack Overflow用户

发布于 2017-01-11 17:48:14

array_key_exists()确保条目存在于数组中。

isset()确保条目不是空的(这也是一个存在检查,因为如果它有一个非空值,它显然在数组中)。

首先在函数中使用isset()来寻找键的存在是因为它在较大的数组中速度更快。因此,函数基本上假定,如果键存在,它将有一个非空值,如果找不到,则使用较慢的array_key_exists()对数组进行双重检查。

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

https://stackoverflow.com/questions/41597142

复制
相关文章

相似问题

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