语法
in_array(value,array,type)
参数 | 描述 |
---|---|
value | 必需。规定要在数组搜索的值。 |
array | 必需。规定要搜索的数组。 |
type | 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。 |
说明
如果给定的值 value 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。
如果没有在数组中找到参数,函数返回 false。
注释:如果 value 参数是字符串,且 type 参数设置为 true,则搜索区分大小写。
例子 1
<?php $people = array("Peter", "Joe", "Glenn", "Cleveland"); if (in_array("Glenn",$people)) { echo "Match found"; } else { echo "Match not found"; } ?>
输出:
Match found
代码如下 | |
$a=array("1,2,3","4"); if(in_array(1,$a)){ echo "条件成立"; } |
这个条件果然是成立的,按照我的思考逻辑上边的那个条件只有在参数1的值为”1,2,3“和为4的时候才成立,但是奇怪的是他居然成立了。战地随即测试了如下情况:
代码如下 | |
$a=array("a,2,3","4"); if(in_array('a',$a)){ echo "条件不成立"; } |
这个是不成立的,在第一个测试用例下,如果把参数1写成’1’条件也是不成立的。战地得出的结论是:
在PHP中如果第一个参数为数字——不加引号的数字啊,第二个数组参数包含有以该数字开头的字符串的话不管第一个参数是否为第二个参数的完整元素,都会返回真值。也就是说,in_array函数并非每次都是按照我的思考逻辑进行整个元素匹配,还是我对数据类型认识的不够清楚呢?
与此同时,战地还发现如果你的数组的第一个元素为0的时候,也会出现问题,看如下情况
代码如下 | |
$a=array(0,"m"); |