0

次の構造の配列 A と B があります。

A:

Array
(
    [0] => 2013-08-01
    [1] => 2013-08-02
    [2] => 2013-08-03
    [3] => 2013-08-04 
)

と B:

Array
(
    [0] => Array
        (
            [0] => 2013-08-01
            [1] => 2
            [2] => 0
            [3] => 0
        )

    [1] => Array
        (
            [0] => 2013-08-02
            [1] => 0
            [2] => 4
            [3] => 0
        )

    [2] => Array
        (
            [0] => 2013-08-04
            [1] => 0
            [2] => 1
            [3] => 0
        )
)

問題は、twi ARRAY (A & B) を次のように組み合わせたいということです。

Array
(
    [0] => Array
        (
            [0] => 2013-08-01
            [1] => 2
            [2] => 0
            [3] => 0
        )
    [1] => Array
        (
            [0] => 2013-08-02
            [1] => 0
            [2] => 4
            [3] => 0
        )
    [2] => Array
        (
            [0] => 2013-08-03
            [1] => 0
            [2] => 0
            [3] => 0
        )
    [3] => Array
        (
            [0] => 2013-08-04
            [1] => 0
            [2] => 1
            [3] => 0
        )
)

両方の配列をマージする方法は?

4

3 に答える 3

0
<?

$a = Array
(
    "2013-08-01",
    "2013-08-02",
    "2013-08-03",
    "2013-08-04"
);

$b = Array
(
        Array (
            "2013-08-01",
            2,
            0,
            0
        ),

        Array (
            "2013-08-02",
            0,
            4,
            0
        ),

        Array (
            "2013-08-04",
            0,
            1,
            0
        )
);

foreach ($a as $a_item) {
    $found = FALSE;
    foreach ($b as $b_item) {
        if($b_item[0]==$a_item) {
            $found = TRUE;  
        }
    }

    if(!$found) {
        $b[] = Array (
            $a_item,
            0,
            0,
            0
        );

    }

}

print_r ($b);

?>

これは、配列に大量のデータがない場合に機能するはずです。大量のデータがある場合は、おそらく再設計して高速化する必要があります。

于 2013-08-24T09:27:01.470 に答える