我有一个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);