1

これは私の最初の配列です

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

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

コマンドを使用して実行しforeach、2 つの配列と比較できます。しかし、問題は、新しく追加された番号と削除された番号を区別する必要があることです。

また、両方の配列を動的に変更できます

編集:

関数を作成しました

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);

基本的に配列diffを使用する

于 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 に答える
0

これらの機能もチェックしてください:

http://www.php.net/manual/en/function.array-diff-assoc.php

http://www.php.net/manual/en/function.array-intersect.php

http://www.php.net/manual/en/function.array-intersect-assoc.php

于 2012-11-20T04:04:53.747 に答える