PHP 的 in_array() 和 array_search() 函数:解决奇怪的行为
PHP 函数 in_array() 和 array_search() 表现出奇怪的行为当用于检查数组中的值时。当数组包含不同类型的元素时,就会出现这个令人费解的问题。
示例:
$arr = [TRUE, "some string", "something else"]; $result = in_array("test", $arr); var_dump($result); // Output: bool(true) $result = array_search("test", $arr); var_dump($result); // Output: int(0)
令人惊讶,不是吗?两个函数都返回 true,表明“test”在数组中,尽管它显然不在数组中。此行为源于这些函数使用的默认比较机制。
严格与松散比较:
默认情况下,in_array() 和 array_search() 使用松散比较(==),即使所比较的值的类型不同,它也会评估 true。在我们的示例中,数组中的 TRUE 元素自动转换为字符串,导致 TRUE == "test" 计算结果为 true。
解决方案:强制严格比较
为了防止这种意外行为,需要通过将这些函数的可选第三个参数设置为 true 来指定严格比较(===)。这迫使函数在比较时检查元素的值和类型,以确保更准确的结果。
$result = in_array("test", $arr, true); var_dump($result); // Output: bool(false) $result = array_search("test", $arr, true); var_dump($result); // Output: int(-1)
在这个修改后的示例中,获得了正确的结果,因为函数被指示使用严格比较。在数组中找不到“test”,返回值反映了这一点。
以上是为什么 PHP 的 `in_array()` 和 `array_search()` 有时会返回意外结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

本文讨论了PHP数据对象(PDO),这是PHP中数据库访问的扩展名。它通过准备好的语句及其对MySQLI的好处,包括数据库抽象和更好的错误处理,强调了PDO在增强安全性方面的作用。

memcache和memcached是通过减少数据库负载加快Web应用程序的PHP缓存系统。可以在仔细的密钥管理的项目之间共享一个实例。

本文讨论了JavaScript和PHP如何通过HTTP请求间接相互作用,因为它们的环境不同。它涵盖了将数据从JavaScript发送到PHP的方法

文章讨论了PHP从1995年的“个人主页工具”到1998年的“ PHP:超文本预处理器”的演变,这反映了其超越个人网站的扩展使用。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

WebStorm Mac版
好用的JavaScript开发工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

SublimeText3汉化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具