程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP in_array()/ array_search()奇怪的行为大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决php in_array()/ array_search()奇怪的行为?

开发过程中遇到php in_array()/ array_search()奇怪的行为的问题如何解决?下面主要结合日常开发的经验,给出你关于php in_array()/ array_search()奇怪的行为的解决方法建议,希望对你解决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,请注明来意。