PHP 检查一个数组是否没有另一个数组以外的其他值


PHP check if one array doesn't have other values than another array

我正在尝试检查一个数组是否没有其他值,但 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;
}
?>

这只是一个例子,但你可以这样做。