我有一个数组
$array= [
0 => "id",
1 => "artist",
2 => "title"
]
但是当我使用in_array(0, $array)
时
它返回true。
此外,如果我尝试使用此var_dump(array_search(0, $array))
,则会得到“ int(0)”。
为什么我的数组中有0,以及如何使其以正确的方式消失?
我使用PHP 5.6
答案 0 :(得分:4)
使用设置为strict
的{{1}}参数来完成任务:
true
如果将第三个参数strict设置为TRUE,则array_search()函数将在干草堆中搜索相同的元素。这意味着它还将对大海捞针中的针进行严格的类型比较,并且对象必须是同一实例。 (c)http://php.net
代码:
in_array(0, $array, true);
array_search(0, $array, true);
会返回:
bool(false)
bool(false)
另请参阅:
http://php.net/manual/en/function.array-search.php
http://php.net/manual/en/function.in-array.php
具有不同针头类型的其他示例:
$array = [
"id",
"artist",
"title",
];
var_dump(in_array(0, $array, true));
var_dump(array_search(0, $array, true));
array(3){
[0] =>
string(2)“ id”
[1] =>
字符串(6)“艺术家”
[2] =>
字符串(5)“标题”
}
没有var_dump($array);
参数
strict
函数,而没有将in_array()
设置为strict
:
代码:
true
输出:
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
var_dump(in_array(0, $array));
var_dump(in_array(1, $array));
var_dump(in_array(154, $array));
var_dump(in_array(154.99, $array));
var_dump(in_array(null, $array));
var_dump(in_array('something', $array));
函数,而没有将array_search()
设置为strict
:
代码:
true
输出:
布尔(0)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
将var_dump(array_search(0, $array));
var_dump(array_search(1, $array));
var_dump(array_search(154, $array));
var_dump(array_search(154.99, $array));
var_dump(array_search(null, $array));
var_dump(array_search('something', $array));
参数设置为strict
true
函数,其中in_array()
设置为strict
:
代码:
true
输出:
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
var_dump(in_array(0, $array, true));
var_dump(in_array(1, $array, true));
var_dump(in_array(154, $array, true));
var_dump(in_array(154.99, $array, true));
var_dump(in_array(null, $array, true));
var_dump(in_array('something', $array, true));
函数,其中array_search()
设置为strict
:
代码:
true
输出:
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
答案 1 :(得分:1)
如果要检查按键,请使用array_key_exists()
功能。 0是键[arra的索引。 in_array()
用于检查值。示例in_array("id")
array_key_exists(0,$array)
答案 2 :(得分:0)
in_array()
通常不严格检查类型,in_array(0, $array)
将int与转换为int的字符串进行比较,从而将"id"
变为零。您想通过传递真实值作为第三个参数来强制进行严格检查:
in_array(0, $array, true);