在检查某个项目是否在数组中时不使用 array_key_exists() 是否安全?
Is it safe not to use array_key_exists() when checking if an item is in the array?
我知道在 PHP 中可以这样检查项目是否在数组中:
if( my_array['item_one'] ){ # some code here... }
这是因为如果项目不是,则返回 null
值(等于 false
或 zero
)。
但它会一直有效吗?这样做总是安全的吗(因为你知道... PHP)?
这个成语是个坏主意。首先,如评论中所述,尝试访问数组中不存在的值将产生未知索引错误。其次,更重要的是,0
和 FALSE
绝对是真实值,但是使用您建议的代码段评估指向此类值的键将表现得好像它们不存在一样,这只是完全错了。
长话短说 - PHP 有一个很好的工具来检查数组是否包含键 - array_key_exists。没有理由不使用它。
我知道在 PHP 中可以这样检查项目是否在数组中:
if( my_array['item_one'] ){ # some code here... }
这是因为如果项目不是,则返回 null
值(等于 false
或 zero
)。
但它会一直有效吗?这样做总是安全的吗(因为你知道... PHP)?
这个成语是个坏主意。首先,如评论中所述,尝试访问数组中不存在的值将产生未知索引错误。其次,更重要的是,0
和 FALSE
绝对是真实值,但是使用您建议的代码段评估指向此类值的键将表现得好像它们不存在一样,这只是完全错了。
长话短说 - PHP 有一个很好的工具来检查数组是否包含键 - array_key_exists。没有理由不使用它。