PHP比较数组

PHP比较数组,php,arrays,array-difference,Php,Arrays,Array Difference,我有两个数组$arrayOld和$arrayNew,我想比较这些数组,只选择不在$arrayNew中的值 我不希望只使用$arrayNew中的值。所以我觉得array_diff帮不了我 $arrayOld = [1, 2, 3, 4, 5] $arrayNew = [1, 4, 5, 6, 7] 因此,它只需要返回2和3,而不需要返回6或7。使用array_diff来实现这一点。由于需要区分数组和旧数组中的数据,因此需要使用旧数组作为数组的第一个参数 注意:Array diff仅从第一个数组返

我有两个数组$arrayOld和$arrayNew,我想比较这些数组,只选择不在$arrayNew中的值

我不希望只使用$arrayNew中的值。所以我觉得array_diff帮不了我

$arrayOld = [1, 2, 3, 4, 5]
$arrayNew = [1, 4, 5, 6, 7]
因此,它只需要返回2和3,而不需要返回6或7。

使用array_diff来实现这一点。由于需要区分数组和旧数组中的数据,因此需要使用旧数组作为数组的第一个参数

注意:Array diff仅从第一个数组返回,而不是从第二个数组返回

结果:

如果您需要输出数组的新键,只需使用array_值即可。新键从0开始

$arr = array_values($n);
使用下面的代码

$arrayOld = [1, 2, 3, 4, 5];
$arrayNew = [1, 4, 5, 6, 7];
print "<pre>";
print_r(array_diff($arrayOld, $arrayNew));
使用数组_diff函数

$arrayOld = array(1, 2, 3, 4, 5);
$arrayNew = array(1, 4, 5, 6, 7);

print_r(array_diff($arrayOld, $arrayNew));

$compare = array();
$i=1;
foreach($arrayOld as $k=>$v){
    if(!in_array($v, $arrayNew)){
        $compare[$i] = $v;
        $i++;
    }
}

$i=$i;
foreach($arrayNew as $k=>$v){
    if(!in_array($v, $arrayOld)){
        $compare[$i] = $v;
        $i++;
    }
}
使用此代码


?使用数组_diff$arrayOld,$arrayNewcheck@WouterdenOuden,不!!Array diff仅从第一个数组返回,而第二个数组不在其中。结果中不应出现可能重复的6和7,请检查问题again@WouterdenOuden,Array diff只从第一个数组返回,而不是从第二个数组返回。哦,你说得对。我想它会给出两个数组中所有不同的值
$arrayOld = [1, 2, 3, 4, 5];
$arrayNew = [1, 4, 5, 6, 7];
print "<pre>";
print_r(array_diff($arrayOld, $arrayNew));
Array
(
[1] => 2
[2] => 3
)
$arrayOld = array(1, 2, 3, 4, 5);
$arrayNew = array(1, 4, 5, 6, 7);

print_r(array_diff($arrayOld, $arrayNew));
$arrayOld = array(1, 2, 3, 4, 5);
$arrayNew = array(1, 4, 5, 6, 7);

print_r(array_diff($arrayOld, $arrayNew));

$compare = array();
$i=1;
foreach($arrayOld as $k=>$v){
    if(!in_array($v, $arrayNew)){
        $compare[$i] = $v;
        $i++;
    }
}

$i=$i;
foreach($arrayNew as $k=>$v){
    if(!in_array($v, $arrayOld)){
        $compare[$i] = $v;
        $i++;
    }
}