【问题标题】:Is it safe not to use array_key_exists() when checking if an item is in the array?检查项目是否在数组中时不使用 array_key_exists() 是否安全?
【发布时间】:2016-09-08 17:10:32
【问题描述】:

我知道在 PHP 中可以通过这种方式检查项目是否在数组中:

if( my_array['item_one'] ){ # some code here... }

这是因为如果项目不是,则返回 null 值(等于 falsezero)。

但它会一直有效吗?这样做总是安全的吗(因为你知道... PHP)?

【问题讨论】:

  • 你很难怪 php 编程草率...
  • 这不是有效的 PHP 和 NO 它不安全,好像不存在它会生成一个 unknown index error
  • 如果array_key_exists() 为你长一个函数名,你可以使用isset($my_array['item_one'])
  • 哦,伙计们,“(因为你知道... PHP)”我只是想指出,在 PHP 中,总有一些东西一开始对你来说并不明显一眼。毕竟这就是为什么我宁愿问这个问题!
  • 你错了。无法以您描述的方式检查项目是否在数组中。 array_key_exists 是检查项是否在数组中的正确方法,isset 是检查项是否在数组中且不为空的正确方法。

标签: php arrays array-key-exists


【解决方案1】:

这个成语是个坏主意。首先,如 cmets 中所述,尝试访问数组中不存在的值将产生未知索引错误。其次,更重要的是,0FALSE 绝对是真实值,但是像您建议的那样使用 sn-p 评估指向此类值的键会表现得好像它们不存在一样,这完全是错误的.

长话短说 - PHP 有一个很好的工具来检查数组是否包含键 - array_key_exists。没有理由不使用它。

【讨论】:

  • 准确来说是 PHP 抛出:Notice: Undefined index: item_one in /Applications/MAMP/htdocs/exp/main.php on line 21,所以如果我理解正确你的意思是这个通知可能会在未来造成一些麻烦?
  • 我不是专家,但经过一段时间的思考后,我清楚地知道,由于许多原因,很高兴知道您的代码在位于生产。因此array_key_exists() 确实是 PHP 的正确方式。 isset()是否也够用,那另当别论了。
猜你喜欢
  • 2021-07-06
  • 2017-12-29
  • 2012-06-30
  • 1970-01-01
  • 2021-03-12
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多