如何检查数组中是否有与另一个数组相同的元素,并将这些元素从数组中弹出


How to check if array has some elements same as another array and to pop those elements out of array

我有一个array,如下所示:

array(1) {
  [0]=>
  string(16) "1785328791698338"
}

和其他类似的array

array(7) {
  [0]=>
  string(17) "10207252567926988"
  [1]=>
  string(17) "10208823390691752"
  [2]=>
  string(17) "10209064245580796"
  [3]=>
  string(16) "1274474365912572"
  [4]=>
  string(16) "1294280923934896"
  [5]=>
  string(16) "1317727711586522"
  [6]=>
  string(16) "1785328791698338"
}

我应该检查第一个数组中的一些元素(在本例中只有一个,但可能会有所不同)是否与第二个数组中一些元素相同,如果是,则从第一个数组中将它们删除。我试过这样做,但不起作用:

function findSameValuesOfArrays($arrayOne,$arrayTwo){
         $newArray=array();
         foreach($arrayOne as $a){
            $newArray[0]=$a;
         }
         foreach($arrayTwo as $b){
            $newArray[1]=$b;
         }
         if (strpos($newArray[1],$newArray[0])) {
            return true;
         }
    }

这只是为了找出是否有相同的元素,然后我可能会取消设置这些值所在的键。但函数返回NULL

array_diff正是您想要的。

$sourceArr = array(1,2,3,4,5);
$filterArr = array(2,4);
$result = array_diff($sourceArr, $filterArr);
var_dump($result);

结果:

array(3) {
  [0]=>
  int(1)
  [2]=>
  int(3)
  [4]=>
  int(5)
}

https://3v4l.org/IvmHH

您可以在此处使用array_intersect,如下所示:

$arr3 = array_intersect($arr1,$arr2);
print_r($arr3);

以下是一个例子:

https://3v4l.org/kqPV2

https://3v4l.org/qZpgf

或者您可以在以下位置阅读更多信息:http://php.net/manual/en/function.array-intersect.php

试试这个:

$arrFirst = array("1785328791698338","10207252567926988");
$arrMain = array("10207252567926988","10208823390691752","10209064245580796","1274474365912572","1294280923934896","1317727711586522","1785328791698338");
foreach ($arrFirst as $key => $value) {
   if(in_array($value, $arrMain )) { // check if value exist in seconf array
        unset($arrFirst[$key]); // if yes - unset that value
   }
}

您可以在此处使用array_incross返回一个数组,该数组包含所有参数中存在的array1的所有值。然后array_diff

$arrFirst = array(0=>"1785328791698338",1=>"1785328791698334",3=>"1785328791698336");
$arrMain = array(0=>"10207252567926988",1=>"10208823390691752",3=>"10209064245580796",4=>"1785328791698338");
$arrIntersect = array_intersect( $arrMain,$arrFirst);
$resultArray = array_diff($arrFirst, $arrIntersect);
print "<pre>";print_r($resultArray);