1

这是我的第一个数组

$old = array(
1,2,3,4,5
);

$new(
2,4,5,6
);

我可以通过使用foreach命令然后与两个数组进行比较。但问题是我必须区分哪些数字是新添加的,哪些数字是删除的。

并且两个数组都可以动态更改

编辑:

我创建了一个函数

function get_diff($old,$new){
$small_arr = $large_arr = array();

if( count($old) > count($new) ){
    $small_arr = $new;
    $large_arr = $old;
}else{
    $small_arr = $old;
    $large_arr = $new;
}

$arr = array_diff($large_arr, $small_arr);

return $arr;

}
4

4 回答 4

2

试试这个 :

<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

print_r($result);
?>

$array1 中的多次出现都以相同的方式处理。这将输出:

Array
(
    [1] => blue
)
于 2012-11-20T03:57:40.967 回答
1
$old = array(
1,2,3,4,5
);
print_r($old);

$new = array(
2,4,5,6
);
print_r($new);
$removed = array_diff($old, $new);
print_r($removed);

$added = array_diff($new,$old);
print_r($added);

基本上使用数组差异

于 2012-11-20T04:10:52.660 回答
0
<?php

function get_diff($old,$new){
$small_arr = $large_arr = array();

if( count($old) > count($new) ){
    $small_arr = $new;
    $large_arr = $old;
}else{
    $small_arr = $old;
    $large_arr = $new;
}

    $arr = array_diff($large_arr, $small_arr);
    $values = "New values = ";
    foreach($arr as $arr_values){
        $values.=$arr_values.",";
    }
    $values.="<br/>";
    $same_arr = array_intersect($large_arr,$small_arr);
    $values.= "Earlier values = ";
    foreach($same_arr as $same_values){
        $values.=$same_values.",";
    }
return $values;

}
$old = array(1,2,3,4,5);

$new= array(2,4,5,6);
echo get_diff($old,$new);
?>

演示

于 2012-11-20T04:15:49.450 回答