我正在尝试检查一个数组是否没有其他值,但 in_array(( 不起作用,所以我想它不能用 in_array(( 完成;
例如
<?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*/
?>
我该怎么做?
使用这个
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()
是 允许被召唤。
这是
您要查找的条件:
if (count(array_diff($arr2, $arr1)) == 0) {
您可以使用
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,但如果不是,则返回 false。
希望这有帮助!
你试过吗
$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;
}
?>
这只是一个例子,但你可以这样做。