4

2つの配列があり、各配列には2つの属性があります

最初の配列:

配列 (

[0] => Array
    (
        [uregisterDate] => 2013-04-03
        [total] => 4
    )

[1] => Array
    (
        [uregisterDate] => 2013-04-04
        [total] => 4
    )

[2] =>; Array
    (
        [uregisterDate] => 2013-04-05
        [total] => 3
    )

)

2 番目の配列:

配列 (

[0] => Array
    (
        [uregisterDate] => 2013-04-03
        [totalFailed] => 2
    )

[1] => Array
    (
        [uregisterDate] => 2013-04-04
        [totalFailed] => 4
    )

)

最終的な配列を以下の出力のようにしたい |( キー uregistredDate を持つ 2 つの配列をマージします。

配列 (

[0] => Array
    (
        [uregisterDate] => 2013-04-03
        [total] => 4
        [totalFailed] => 2
    )

[1] => Array
    (
        [uregisterDate] => 2013-04-04
        [total] => 4
    [totalFailed] => 4
    )

[2] =>; Array
    (
        [uregisterDate] => 2013-04-05
        [total] => 3
    )

)

任意のアイデア、スニペット コード?

4

4 に答える 4

2

このコードを試してください。

function combo($array1, $array2) {
    foreach($array1 as $key => $value) {
        if(isset($array2[$key]))
        $result[$key] = array_merge($value, $array2[$key]);
        else
        $result[$key] = $value;
    }
    return $result;
}
$array = combo(#your array 1#, #your array 2#);
print_r($array); // to view the output

更新されたコード

function combo($array1, $array2) {
    foreach($array1 as $key => $value) {
        if(isset($array2[$key])) {
        if($value['uregisterDate'] == $array2[$key]['uregisterDate'])
           {
            $result[$key] = array_merge($value, $array2[$key]);
            } 
            else
            {
                $result[$key] = $array2[$key];
                $result[rand(0,99)]= $value;
            }

        }
        else
        $result[$key] = $value;
    }
    return array_values($result);
}
$array = combo($a1, $a2);
print_r($array);
于 2013-04-09T10:48:54.603 に答える
1

この機能を試す

$array1 = array(
    array( "uregisterDate" => '2013-04-03', "total" => 4 ),
    array( "uregisterDate" => '2013-04-04', "total" => 4 ),
    array( "uregisterDate" => '2013-04-05', "total" => 3 )
   );

$array2 = array(
    array( "uregisterDate" => '2013-04-03', "totalFailed" => 2),
    array( "uregisterDate" => '2013-04-04', "totalFailed" => 3 )
   );

function merge_array_common_key($a1, $a2, $Ckey) {
    $merge = array_merge($a1,$a2);
    $keys = array();
    foreach ($merge as $key => $value) {
        if(isset($keys[$value[$Ckey]])){
            $merge[$keys[$value[$Ckey]]] += $value;
            unset($merge[$key]);
            continue;
        }
        $keys[$value[$Ckey]] = $key;
    }
    return $merge;
}

$test = merge_array_common_key($array1, $array2, 'uregisterDate');

var_dump($test);
于 2013-04-09T11:00:22.127 に答える
-1

組み込み関数 array_merge_recursive() は gr8 になると思います:

$array = array_merge_recursive($array1, $array2);

または関数が役立つ場合があります

$newarray = Array();
foreach ($arr1 as $element=>$value){
    $newarray = array_merge($arr1[$element],$arr2[$element])
}
于 2013-04-09T10:37:29.793 に答える