An array of the sum of the value based on the same key

I have array data as below:

Array ( [0] => Array ( [name] => Bank BRI [amount] => 0 ) [1] => Array ( [name] => Bank BRI [amount] => 0 ) [2] => Array ( [name] => Bank BCA [amount] => 1412341234 ) [3] => Array ( [name] => Bank CIMB Niaga [amount] => 532532552 ) [4] => Array ( [name] => Bank BRI [amount] => 34534534 ) [5] => Array ( [name] => Bank CIMB Niaga [amount] => 453425243 ) [6] => Array ( [name] => Bank BRI [amount] => 0 ) [7] => Array ( [name] => Bank BNI [amount] => 124124 ) [8] => Array ( [name] => Bank CIMB Niaga [amount] => 352345623 ) [9] => Array ( [name] => Bank BCA [amount] => 23432423 ) [10] => Array ( [name] => Bank Mandiri [amount] => 0 ) [11] => Array ( [name] => Bank BCA [amount] => 0 ) [12] => Array ( [name] => Bank BCA [amount] => 0 ) [13] => Array ( [name] => Bank Permata [amount] => 352352353 ) ) 

How to sum an amount based on the same β€œbank name”.

My data should be displayed as follows:

 Bank BRI........... with '*total amount*' Bank BCA........... with '*total amount*' Bank CIMB NIAGA.... with '*total amount*' Bank BNI........... with '*total amount*' Bank Mandiri....... with '*total amount*' Bank Permata....... with '*total amount*' 
+7
arrays php sum
source share
5 answers
 <?php // array of bank structure $banks = array(); $banks[] = array('name'=>'Bank BRI','amount'=>rand()); $banks[] = array('name'=>'Bank BRI','amount'=>rand()); $banks[] = array('name'=>'Bank BCA','amount'=>rand()); $banks[] = array('name'=>'Bank CIMB','amount'=>rand()); $banks[] = array('name'=>'Bank BRI','amount'=>rand()); $banks[] = array('name'=>'Bank CIMB','amount'=>rand()); $banks[] = array('name'=>'Bank BRI','amount'=>rand()); $banks[] = array('name'=>'Bank BNI','amount'=>rand()); $banks[] = array('name'=>'Bank CIMB','amount'=>rand()); $banks[] = array('name'=>'Bank BCA','amount'=>rand()); $banks[] = array('name'=>'Bank Mandiri','amount'=>rand()); $banks[] = array('name'=>'Bank BCA','amount'=>rand()); $banks[] = array('name'=>'Bank BCA','amount'=>rand()); $banks[] = array('name'=>'Bank Permata','amount'=>rand()); // begin the iteration for grouping bank name and calculate the amount $amount = array(); foreach($banks as $bank) { $index = bank_exists($bank['name'], $amount); if ($index < 0) { $amount[] = $bank; } else { $amount[$index]['amount'] += $bank['amount']; } } print_r($amount); //display // for search if a bank has been added into $amount, returns the key (index) function bank_exists($bankname, $array) { $result = -1; for($i=0; $i<sizeof($array); $i++) { if ($array[$i]['name'] == $bankname) { $result = $i; break; } } return $result; } 
+5
source share

So, first you need $amountsArray to somehow assign the values ​​you specified. Then:

 $bankTotals = array(); foreach($amountsArray as $amount) { $bankTotals[$amount['name']] += $amount['amount']; } 

After that, $bankTotals is an array indexed by the name of the bank, with the value of the total amount for the bank. You can use this array as you wish.

One thing that might be helpful is another foreach to print everything:

 foreach($bankTotals as $name => $amount) { echo $name.".....".$amount."\n"; } 
+7
source share

Example in C #:

 Dictionary<string,object>[] items = { new Dictionary<string, object> {{ "name", "Bank BRI"}, {"amount", 0 }}, new Dictionary<string, object> {{ "name", "Bank BRI"}, {"amount", 0 }}, new Dictionary<string, object> {{ "name", "Bank BCA"}, {"amount", 1412341234 }}, new Dictionary<string, object> {{ "name", "Bank CIMB Niaga"}, {"amount", 532532552 }} }; var amounts = new Dictionary<string, int>(); foreach (var item in items) { string bank = (string)item["name"]; int amount = (int)item["amount"]; if (amounts.ContainsKey(bank)) { amounts[bank] += amount; } else { amounts.Add(bank, amount); } } foreach (var amount in amounts) { Console.WriteLine("{0}: {1}", amount.Key, amount.Value); } 
+2
source share

I would rather add

 $bankTotals = array(); foreach($amountsArray as $amount) { if(isset($bankTotals[$amount['name']])) $bankTotals[$amount['name']] += $amount['amount']; else $bankTotals[$amount['name']] = $amount['amount']; } 
+1
source share
 $a = arrayofindonesianbanks; foreach ($a as $anarrays) { echo "$anarrays[name]." ".$anarrays[amount]"; } } 

see foreach in php.

0
source share

All Articles