大佬教程收集整理的这篇文章主要介绍了PHP in_array()/ array_search()奇怪的行为,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
该函数的这种行为in_array()
而array_search()
不是一个错误,而是有据可查的行为。
这两个函数都有一个名为的第三个可选参数$Strict
,默认情况下为falSE:
现在,这意味着默认情况下,两个函数都使用松散(==
)比较来比较值。因此,它们仅 在 php类型变戏法 之后
检查值是否相同,而不检查类型。因此,在您的示例中,TRUE == "any none emtpy String"
计算结果为TRUE。
因此,通过在调用函数时将第3个参数设置为TRUE,可以说php应该使用Strict(===
)比较,并且在比较时应该检查值和值的类型。
我在使用php函数时发现了一些奇怪的行为in_array()
。我有一个像这样的数组:
$arr = [TRUE,"some String","something else"];
现在,如果我要检查"test"
数组中是否存在它,显然不是,但是in_array()
仍然返回TRUE,为什么呢?
$result = in_array("test",$arr);
var_dump($result); // **Output: bool(true)**
使用时会发生相同的事情array_search()
:
$result = array_search("test",$arr);
var_dump($result); // **Output: int(0)**
我认为也许数组中的值TRUE会自动导致该函数为每个结果返回TRUE,而不检查数组的其余部分,但是我找不到任何文档来表明这种非常奇怪的功能。
以上是大佬教程为你收集整理的PHP in_array()/ array_search()奇怪的行为全部内容,希望文章能够帮你解决PHP in_array()/ array_search()奇怪的行为所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。