in_array功能无法正常工作
问题描述:
此代码应返回TRUE
值:in_array功能无法正常工作
<?php
$return = in_array(array(1, 2), array(1, 2));
?>
但in_array
返回FALSE。
答
in_array
检查数组是否存在。
你$needle
好好尝试一下存在于所有都作为$haystack
的值,这将是确定的,如果你$haystack
在这种情况下,实际上array(1,2)
array(1,2,3,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.
答
按照PHP手册in_array
,该函数的语法是:
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
不是你需要的功能。
答
您的第一个数组不包含在第二个数组中,它是平等的。
这将返回true:
var_dump(in_array(array(1, 2), array(1, 2, array(1, 2))));
答
你missunderstand in_array看到offiziell文档: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";
}
?>
答
如果第二阵列看起来像这样
array(array(1, 2));
然后返回true
答
阵列(1,2)不处于阵列(1,2)是阵列(1,2),
$return = in_array(array(1, 2), array(array(1, 2)));
将返回true。 (更多是yes123的答案的延伸)
答
你有兴趣intersection?
$arr1 = array(1, 2);
$arr2 = array(1, 2);
$return = array_intersect($arr1, $arr2);
if(count($return) === count($arr1)) {
// all are present in arr2
}
但是没有一个数组包含数组1和2在另一个中? – 2011-06-01 15:53:14
考虑到你是相当新的看看答案,并选择,只要你认为是最好的。 – dynamic 2011-06-01 16:09:04
我有两个数组,第一个(1,2,3,4,5)和第二个(1,4),我想检查第二个数组中的元素是否在第一个。如何以简单的方式做到这一点? – Damien 2011-06-01 16:17:41