4

PHPに多次元配列がある場合...

    [0] => Array
    (
        [url] => http://domain1.com
        [domain] => domain1.com
        [values] => Array
            (
                [character_length] => 25
                [word_count] => 7
            )

    )

    [1] => Array
    (
        [url] => http://domain2.com
        [domain] => domain2.com
        [values] => Array
            (
                [character_length] => 30
                [word_count] => 7

    )

それらをマージして生成するにはどうすればよいですか....

    [0] => Array
    (
        [url] => *can be anything*
        [domain] => *can be anything*
        [values] => Array
            (
                [character_length] => 55
                [word_count] => 14
            )

    )
4

3 に答える 3

7

多次元配列の値を合計できる組み込み関数はないと思います。ただし、ラムダ式関数を使用してそれを行う方法を次に示します。

これがあなたの配列であるとしましょう:

 [items] => Array
        (
            [0] => Array
                (
                    [ID] => 11
                    [barcode] => 234334
                    [manufacturer] => Dell
                    [model] => D630
                    [serial] => 324233
                    [current_value] => 1100.00
                )

            [1] => Array
                (
                    [ID] => 22
                    [barcode] => 323552
                    [manufacturer] => Dell
                    [model] => D630
                    [serial] => 234322
                    [current_value] => 1500.00
                )

        )

値を渡すことができる関数を作成できます。

$array_value_sum = create_function('$array,$key', '$total = 0; foreach($array as $row) $total = $total + $row[$key]; return $total;');

そして、次のように使用します。

echo "Total Current Value" . $array_value_sum($obj['items'], 'current_value');
于 2011-04-05T11:37:55.127 に答える
5

foreachすべてのアイテムに対して単純な操作を行い、値を合計するだけです。

$values = array(
    'character_length' => 0,
    'word_count'       => 0
);
foreach ($array as $item) {
    $values['character_length'] += $item['values']['character_length'];
    $values['word_count']       += $item['values']['word_count'];
}
于 2009-09-10T10:14:48.980 に答える