PHP Array_Sum en matriz multidimensional

Si tengo una matriz multidimensional en PHP, entonces …

[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 ) 

¿Cómo puedo fusionarlos para producir …?

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

Solo haga un foreach simple en todos los artículos y sume los valores:

 $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']; } 

No creo que haya ninguna función incorporada que permita sumr los valores de una matriz multidimensional. Sin embargo, aquí hay una forma de hacerlo utilizando una función de estilo lambda.

Supongamos que esta es tu matriz:

  [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 ) ) 

Puede crear una función a la que pueda pasarle valores:

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

Y luego úsalo así:

 echo "Total Current Value" . $array_value_sum($obj['items'], 'current_value'); 

Puedes hacer esto usando la función array_sum () y array_map () como a continuación:

 $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)); 
    Intereting Posts