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

Php 如何检查数组中是否有与另一个数组相同的元素,并将这些元素从数组中弹出,php,arrays,Php,Arrays,我有一个数组,如下所示: array(1) { [0]=> string(16) "1785328791698338" } 和其他类似的数组: array(7) { [0]=> string(17) "10207252567926988" [1]=> string(17) "10208823390691752" [2]=> string(17) "10209064245580796" [3]=> string(16) "12

我有一个
数组
,如下所示:

array(1) {
  [0]=>
  string(16) "1785328791698338"
}
和其他类似的
数组

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\u intersect
,如下所示:

$arr3 = array_intersect($arr1,$arr2);
print_r($arr3);
以下是一个例子:

或者您可以在以下位置阅读更多内容:

尝试以下内容:

$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_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)
}

您可以在此处使用array\u intersect返回一个数组,该数组包含所有参数中存在的array1的所有值。然后是数组_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);
$arrFirst=array(0=>“1785328791698338”,1=>“1785328791698334”,3=>“1785328791698336”);
$arrMain=array(0=>“10207252567926988”,1=>“10208823390691752”,3=>“10209064245580796”,4=>“1785328791698338”);
$arrIntersect=array\u intersect($arrMain,$arrFirst);
$resultArray=array_diff($arrFirst,$arrcest);
打印“”;打印(resultArray);

简单地说,您可以说:您想删除第一个数组中第二个数组中的所有元素。这意味着正如重复的
$result=array\u diff($yourFirstArray,$secondArray)中所解释的那样