代码之家  ›  专栏  ›  技术社区  ›  michael

多维数组上的php数组和

  •  4
  • michael  · 技术社区  · 17 年前

    如果我有一个像这样的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
                )
    
        )
    
    3 回复  |  直到 9 年前
        1
  •  5
  •   Kermit    13 年前

    做一个简单的 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'];
    }
    
        2
  •  7
  •   Andy    15 年前

    我认为没有任何内置函数可以让您对多维数组的值求和。但是,这里有一种使用lambda样式函数的方法。

    假设这是您的数组:

     [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');
    
        3
  •  0
  •   Faisal    9 年前

    你可以用 array_sum() 和 array_map() 功能如下:

    $totalCharacterLength = array_sum(array_map(function($item) { 
        return $item['values']['character_length']; 
    }, $totalCharacterLength));
    
    $totalWordCount = array_sum(array_map(function($item) { 
        return $item['values']['word_count']; 
    }, $totalWordCount));
    
    推荐文章