【PHP】in_array需要注意的点

简介:
in_array

(PHP 4, PHP 5, PHP 7)
in_array — 检查数组中是否存在某个值

说明
----
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
大海捞针,在大海(haystack)中搜索针( needle),如果没有设置 strict 则使用宽松的比较。

参数
----
needle
待搜索的值。

Note:
如果 needle 是字符串,则比较是区分大小写的。
haystack
待搜索的数组。

strict
如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。

返回值
----
如果找到 needle 则返回 TRUE,否则返回 FALSE。

看问题:

<?php
$array = range(0, 7);
$string = 's';

if (in_array($string, $array)) {
    echo 1;
} else {
    echo 2;
}

// 输出结果为 1

很显然这并不是我们期望的结果。但究竟为啥会这样呢?

因为in_array()会将0's'进行比较,0number类型,'s'string类型,根据php manualComparison Operators一章的说明可知,numberstring进行比较的时候,会先将string类型首先转化为number,然后再进行比较操作。 's'转化为number的结果为0,而0 == 0的结果是true,所以in_array($string, $array)的结果也是 true

如果把in_array()的第三个参数strict设置为true,比较的时候就会判断值和类型是否都相等。如果都相等的话,才会返回true,否则返回false

目录
相关文章
|
7月前
|
搜索推荐 算法 PHP
PHP 数组(Array) - 排序算法
PHP 数组(Array) - 排序算法
23 0
|
7月前
|
PHP 索引
PHP 数组(Array)
PHP 数组(Array)
30 0
|
JSON PHP 数据库
PHP:Laravel cast array json数据存数据库时unicode 编码问题和update更新不触发数据转换
PHP:Laravel cast array json数据存数据库时unicode 编码问题和update更新不触发数据转换
104 0
PHP 简单 对象 (object) 与 数组 (array) 的转换
PHP 简单 对象 (object) 与 数组 (array) 的转换
|
存储 JSON 安全
为什么我觉得GoFrame的garray比PHP的array还好用?
写过PHP的同学都知道 PHP的数组Array非常好用,特别灵活。我在写PHP之前使用Java做安卓开发,在接触PHP的数组Array之后,直呼太香了!
为什么我觉得GoFrame的garray比PHP的array还好用?
|
存储 PHP 索引
PHP 零基础入门笔记(12):数组 array
PHP 零基础入门笔记(12):数组 array
PHP:Cannot use object of type stdClass as array
PHP:Cannot use object of type stdClass as array
110 0
|
PHP
【PHP】Cannot use object of type stdClass as array
【PHP】Cannot use object of type stdClass as array
314 0
【PHP】Cannot use object of type stdClass as array
PHP:array数组的增、删、改、查操作
PHP:array数组的增、删、改、查操作
106 0