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)中所解释的那样代码>