PHP检查一个数组是否没有其他数组比其他值
我想检查一个数组是否没有其他值比其他值,但in_array()没有工作,所以我想它不能用in_array()完成;PHP检查一个数组是否没有其他数组比其他值
例如
<?php
$arr1 = array(1,2,3,4,5,6);
$arr2 = array(1,2,9);
if(/*all values in $arr2 are in $arr1*/){
/*return true*/
}
else{
/*return false*/
}
/*this examle should return false*/
?>
或
<?php
$arr1 = array(1,2,3,4,5,6);
$arr2 = array(1,2,6);
if(/*all values in $arr2 are in $arr1*/){
/*return true*/
}
else{
/*return false*/
}
/*this examle should return true*/
?>
我该怎么办呢?
使用this
count($array) == count(array_intersect($array,$valid));
..或来不去想它。
$array == array_intersect($array,$valid);
注意,这会产生
true
如果(string)$elementtocheck=(string)$validelement
,所以在本质上,只有 可用于标量。如果你的数组中有更复杂的值 (数组,对象),这将不起作用。为了使是工作中,我们改变它 位:sort($array);//order matters for strict sort($valid); $array === array_intersect($valid,$array);
... 假设,目前的顺序并不重要/
sort()
是 允许调用。
我没有更复杂的数据只是数字,多数民众赞成为什么我发布了这样的例子。并感谢它的工作。 – 2014-10-03 18:15:29
你试过
$arr1 == $arr2
或者你可以使用一个功能
<?php
function compareArrays(Array $a, Array $b){
if(count($a) != count($b)){
return false;
}
foreach($a as $value){
if(!in_array($value, $b)){
return false;
}
}
return true;
}
?>
这只是一个例子,但你可以这样来做。
可以使用array_intersect()
功能:
if (array_intersect($arr1, $arr2) == $arr2) {
// $arr2 has only elements from $arr1
} else {
// $arr2 has not only elements from $arr1
}
尝试array_diff
:
例
public function checkSameContents($arr1, $arr2) {
$diff = array_diff($arr1, $arr2); // returns "unsame" elements in array
return count($diff) === 0;
}
如果阵列具有相同的内容,该函数将返回true,但假的,如果没有。
希望这会有所帮助!
这是你正在寻找的条件:
if (count(array_diff($arr2, $arr1)) == 0) {
谢谢,我喜欢你的答案,但我已经接受了一个,当我看到你的。 – 2014-10-03 18:17:52
有数组功能这样的失衡:array_merge,和array_diff,array_intersect,等... – 2014-10-03 18:05:35