第1个回答 2017-10-16
type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。
复制代码 代码如下:
$arr = array('可以','如何','方法','知道','没有','不要');
//in_array(value,array,type)
$isin = in_array("如何2",$arr);
if($isin){
echo "in====".$isin;
}else{
echo "out====".$isin;
}
方法二:
array_key_exists 'array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。array_key_exists(key,array
方法三:
array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。array_search(value,array,strict),当数据量比较大的时候,用array_key_exists比较合适,但占用的内存比较大,
数组结构是: array(1, 2, 3, ..)和 array(1 => true, 2 => false, ..),内存使用比值为1:2。
具体跟内部实现有关系,在php中第一种和第二种的数据结构类似,都是关联数组。
其它补充:
查找一个元素是否在数组中,一共有下面三种做法:
in_array '函数在数组中搜索给定的值。in_array(value,array,type)type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。
array_key_exists 'array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。
array_key_exists(key,array)
array_search 'array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。
array_search(value,array,strict)
从这里来看,在数据量不大的时候,比如小于1000,查找用哪一种都行,都不会成为瓶颈;
当数据量比较大的时候,用array_key_exists比较合适。
当然这里array_key_exists占用的内存比较大,经测算
数组结构是: array(1, 2, 3, ..)和 array(1 => true, 2 => false, ..)
他们内存使用比值为1:2;
这个和内部实现有关系,实际上在php中第一种和第二种的数据结构类似,都是关联数组。
php in_array() 检查数组中是否存在某个值
in_array检查数组中是否存在某个值
基本语法:
bool in_array(mixed $needle,array $haystack,bool $strict=FALSE)
在 haystack 中搜索 needle
参数介绍
参数
描述
needle 必需。规定要在数组搜索的值。如果是字符串,则比较是区分大小写的。
haystack 必需。规定要搜索的数组。
strict 可选。如果设置该参数为 true,则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。
返回值
如果找到 needle 则返回 TRUE ,否则返回 FALSE 。
实例:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$os = array(
"Mac",
"NT",
"Irix",
"Linux"
);
if (in_array("Irix", $os)) {
echo "Got Irix";
}
if (in_array("mac", $os)) {
echo "Got mac";
}
?>
在线运行第二个条件失败,因为 in_array() 是区分大小写的,所以以上程序显示为:
Got Irix本回答被提问者采纳