0

MySQLクエリ結果から得られた次の2つの配列結果があります。

配列 1 (元のデータ):

Array
(
    [w_a] => Array
        (
            [0] => Array
                (
                    [cod] => CRR
                    [pr] => LL
                    [aid] => VM2254
                    [gender] => m
                    [title] => 
                )
        )

    [w_a_ml] => Array
        (
        )

    [w_a_ol] => Array
        (
        )

    [w_a_rl] => Array
        (
            [0] => Array
                (
                    [rol] => 1
                )
        )
)

配列 2 (変更データ)

Array
(
    [w_a] => Array
        (
            [0] => Array
                (
                    [cod] => CRR
                    [pr] => LL
                    [aid] => VM2254
                    [gender] => f
                    [title] => Mr
                )
        )

    [w_a_ml] => Array
        (
            [0] => Array
                (
                    [wl] => 255
                    [care] => Sahan
                    [heigh] => 
                    [adam] => 
                    [instance] => Look 
                )
        )

    [w_a_ol] => Array
        (
        )

    [w_a_rl] => Array
        (
            [0] => Array
                (
                    [rol] => 1
                )
        )
)

上記の 2 つの配列から達成したいことは、以下のように、結果を表形式または各フィールド (元および新規変更) の内部フォームで比較して表示することです。

    FiledsN     Original    New Change
    title       Empty       Mr
    Wl          Empty       255
    Care        Empty       Sahan
    gender        m         f
    instance    Empty       Look

この関数を使用して、配列を単一の配列にしようとしました:

function array_single($arr) {
    if (!is_array($arr)) {
        return FALSE;
    }
    $res = array();
    foreach ($arr as $keys => $values) {
       if (is_array($values)) {
           $res = array_merge($res, array_single($values));
       } else {
           $res[$keys] = $values;
       }
    }
    return $res;
}

そして、これを使用して比較します:

function diff($new,$old) {
    $del=array_diff_assoc($old,$new);
    $add=array_diff_assoc($new,$old);
    return $diff=array("old"=>$del, "new"=>$add);
}
4

0 に答える 0