所用PHP环境:7.1.16
函数简介
此函数检查数组中是否存在某个值
返回值为 布尔(boolean) 类型的值 true or false
注意: 此函数区分大小写
函数原型
bool in_array($index, $array, [,$strict]) ;
参数
$index:要检查的的值
$array:要检查的数组
$strict:可选参数,用于指定搜索模式(此函数有 松散/严格 两种搜索模式)
例子
-
松散搜索
<?php
$info = array('小明','男',12) ; // 创建一个保存小明各人信息的数组 数组值
$index_1 = '12' ; // 检擦值1 string
$index_2 = 12 ; // 检擦值2 int
var_dump(in_array($index_1,$info));
var_dump(in_array($index_2,$info));
?>
//输出
D:\WampServer\www\MyPhpCode\01.php:5:boolean true
D:\WampServer\www\MyPhpCode\01.php:6:boolean true
结果分析:
保存小明个人信息的数组中有一项保存着年龄的 int 类型的数据 12
检查值与数组值对比:
..|- $index_1 的值为 string 类型的 12 , 书面值相同,数据类型不一致
..|- $index_2 的值为 int 类型的 12 ,书面值相同,数据类型一致
搜索结果中两项都为 真(true)
可以看出,松散搜索模式是不区分数据类型。
-
严格搜索
当 in_array() 的 $strict 参数(第三个参数)为 true 时启用严格搜索模式
$info = array('小明','男',12) ; // 创建一个保存小明各人信息的数组
$index_1 = '12' ; // 检擦值1 string
$index_2 = 12 ; // 检擦值2 int
var_dump(in_array($index_1,$info,true)); // 启用严格搜索模式
var_dump(in_array($index_2,$info,true)); // 启用严格搜索模式
?>
// 输出
D:\WampServer\www\MyPhpCode\01.php:5:boolean false
D:\WampServer\www\MyPhpCode\01.php:6:boolean true
结果分析
沿用了第一个例子的源码,在第一个例子的基础上开启了严格搜索。
in_array($index_1,$info,true) 的结果为 false
由于 index_1 的 12 为 string 类型,与数组中的 int 类型 12 不一致,所以返回了 false
由此可以看出,在严格搜索模式中,是区分数据类型的。
搜索数组项目可以,那搜索数组中的数组(嵌套数组)可不可以呢?来尝试下
<?php
$info = array('小明','男',12,array('小明爸','小明妈')) ; // 在小明个人信息数组中嵌套一个保存小明父母名字的数组
$index = array('小明爸','小明妈') ;
var_dump(in_array($index,$info)); // 松散搜索模式
var_dump(in_array($index,$info,ture)); // 严格搜索模式
?>
// 输出
D:\WampServer\www\MyPhpCode\01.php:4:boolean true
D:\WampServer\www\MyPhpCode\01.php:5:boolean true
从输出可以看到,无论是在松散搜索模式还是严格模式中,都是可以搜索嵌套数组的,至于可不可以搜索多维数组,您自个尝试吧,我不想码字了,拜了个拜。


不对,好像忘了什么。。。。 斯。。。。。哦!。。。。总结。对对对,总结
总结
- in_array()区分大小写
- 在严格模式下,搜索区分数据类型,松散模式不区分数据类型
- 可搜索嵌套数组

网友评论