簡體   English   中英

獲取與鍵php數組具有相同值的值的總和

[英]Get sum of values which have same value for key php array

我有下面的數組,

Array ( [0] => Array ( [report_id] => 1 [amount] => 100.00 [category_name] => Trial1 ) [1] => Array ( [report_id] => 1 [amount] => 150.00 [category_name] => Trial2 ) [2] => Array ( [report_id] => 1 [amount] => 200.00 [category_name] => Trial2 ) 

我要發送的內容具有以下格式的JSON

它將獲得一些相等的類別名稱,然后將其作為json發送。

[{'category_name': 'Trial1', 'Sum':100]}, {'category_name':'Trial2', 'Sum':350]

我怎樣才能做到這一點? 是否正在考慮獲取foreach循環,然后比較category_name並使用。= +來求和? 但是我在那里迷路了

謝謝,

請嘗試以下解決方案:

<?php
$array = array ( 
'0' => Array ( 'report_id' => 1, 'amount' => '100.00', 'category_name' => 'Trial1' ) ,
'1' => Array ( 'report_id' => 1, 'amount' => '150.00' ,'category_name' => 'Trial2' ),
'2' => Array ( 'report_id' => 1, 'amount' => '200.00' ,'category_name' => 'Trial2' ) ,
);

$new_array = array();
foreach($array as $a){
    if(!isset($new_array[$a['category_name']]['amount'])){
        $new_array[$a['category_name']]['amount'] = 0;
    }
    $new_array[$a['category_name']] = array(
        'category_name' => $a['category_name'],
        'amount' => $new_array[$a['category_name']]['amount'] + $a['amount'],
    );
}

//print_r(array_values($new_array));

echo json_encode(array_values($new_array));

輸出量

[{"category_name":"Trial1","amount":100},{"category_name":"Trial2","amount":350}]

可能的解決方案:

$categoriesArray = array();

foreach ($yourArray as $arrayItem) {
   if (!isset($categoriesArray[$arrayItem['category_name']])) {
       $categoriesArray[$arrayItem['category_name']] = array(
           'category_name' => $arrayItem['category_name'],
           'sum' => 0
       );
   }

   $categoriesArray[$arrayItem['category_name']]['sum'] += $arrayItem['amount'];
}

$categoriesArray = json_encode(array_values($categoriesArray));

假設$ input是您的數組,$ output是JSON字符串:

$categorysum = [];
array_walk($input, function($el) use (&$categorysum) {
    $categorysum += [$el['category_name'] => ['category_name' => $el['category_name'], 'Sum' => 0]];
    $categorysum[$el['category_name']]['Sum'] += $el['amount'];
});
$output = json_encode(array_values($categorysum));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM