此代码应返回TRUE
值:
<?php
$return = in_array(array(1, 2), array(1, 2));
?>
但in_array
返回FALSE。
答案 0 :(得分:13)
in_array
检查数组中是否存在值。
您的$needle
根本不存在$haystack
如果您的$haystack
array(1,2,3,array(1,2))
请注意,在这种情况下array(1,2)
实际上是在预期内部找到的
如果你想检查2个数组是否相等,我建议你===
运算符
($a === $b) // TRUE if $a and $b have the same key/value pairs in the same order and of the same types.
答案 1 :(得分:5)
根据您的示例,您可能需要查看array_intersect()。它以一种可能更符合您的规范的方式比较数组。
答案 2 :(得分:4)
根据in_array
的PHP手册,函数的语法是:
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
因此,您需要提供$needle
值作为第一个参数。这解释了为什么您的示例返回FALSE。但是,这些示例将各自返回TRUE:
in_array(1, array(1, 2));
in_array(2, array(1, 2));
in_array(array(1, 2), array(1, 2, array(1, 2)))
那就是说,如果你准确地解释你想要做什么,它可能会有所帮助。也许in_array
不是你需要的功能。
答案 3 :(得分:4)
你的第一个数组不包含在第二个数组中,它是相等的。
返回true:
var_dump(in_array(array(1, 2), array(1, 2, array(1, 2))));
答案 4 :(得分:3)
您对intersection感兴趣吗?
$arr1 = array(1, 2);
$arr2 = array(1, 2);
$return = array_intersect($arr1, $arr2);
if(count($return) === count($arr1)) {
// all are present in arr2
}
答案 5 :(得分:2)
第一个参数是你在第二个参数(数组)中寻找的值 http://php.net/manual/fr/function.in-array.php
答案 6 :(得分:2)
你想念in_array见offiziell docs:http://uk.php.net/in_array
<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');
if (in_array(array('p', 'h'), $a)) {
echo "'ph' was found\n";
}
if (in_array(array('f', 'i'), $a)) {
echo "'fi' was found\n";
}
if (in_array('o', $a)) {
echo "'o' was found\n";
}
?>
答案 7 :(得分:2)
数组(1,2)不在数组(1,2)中,它是数组(1,2),
$return = in_array(array(1, 2), array(array(1, 2)));
会返回true。 (更多是yes123答案的延伸)
答案 8 :(得分:1)
在您的情况下,in_array的第一个参数不应该是数组,而应该是整数。您正在使用该代码执行的操作是检查数组中是否存在数组,而不存在该数组。一个正确的形式是:
in_array(1, array(1, 2)); // true
答案 9 :(得分:1)
如果第二个数组看起来像这样
array(array(1, 2));
然后返回true