首页 > 解决方案 > 如何在 laravel 中访问和添加数组对象?

问题描述

$loanAmountbyMonth = Loan::select('date_release','amount_granted')
                             ->where('invalid',false)
                             ->where('transaction_year', $transyear)
                             ->get()
                             ->groupBy(function($date) {
        
           return Carbon::parse($date->date_release)->format('m'); // grouping by months
    });     

    $loanmcount2 = [];
    $loanArr2 = [];

    foreach ($loanAmountbyMonth as $key => $value) {
        $loanmcount2[(int)$key] = $value;
    }
    
    return view('src/modules-crud',compact('loanmcount2'));

输出:

string(471) "{"9":[{"date_release":"2021-09-21","amount_granted":"10000"}],"5":[{"date_release":"2021-05-23","amount_granted":"10000"},{"date_release":"2021-05-23","amount_granted":"20000"}],"6":[{"date_release":"2021-06-17","amount_granted":"10000"}],"7":[{"date_release":"2021-07-18","amount_granted":"15000"},{"date_release":"2021-07-18","amount_granted":"50000"},{"date_release":"2021-07-18","amount_granted":"14000"}],"8":[{"date_release":"2021-08-22","amount_granted":"10000"}]}"

我想要的输出:

string(61) "{"9":"10000","5":"30000","6":"10000","7":"79000","8":"10000"}"

我想添加amount_granted下,"7":[{"date_release":"2021-07-18","amount_granted":"15000"},{"date_release":"2021-07-18","amount_granted":"50000"},{"date_release":"2021-07-18","amount_granted":"14000"}]但我只能访问第一个数组对象值,每次使用时授予的数量等于 15,000 $value[0]['amount_granted]。如果我使用$value[1]['amount_granted']它说未定义的偏移量 1。我如何将键 7 中授予的金额加在一起?谢谢你。

标签: phparrayslaravelobject

解决方案


为此,您将需要 2 个嵌套循环。遍历特定月份的所有金额值并将其相加,然后将其添加到结果数组中。

片段:

foreach($loanAmountbyMonth as $key => $value){
  $sum = 0;
  foreach($value as $key2 => $val){
     $sum += $val['amount_granted'];
  }
  $loanmcount2[(int)$key] = $sum;
}

较短的版本:

foreach ($loanAmountbyMonth as $key => $value) {
     $loanmcount2[(int)$key] = array_sum(array_column($value, 'amount_granted'));
}

推荐阅读