如何在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"}]}"

My Desired Output:

string(61) "{"9":"10000","5":"30000","6":"10000","7":"79000","8":"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"}]下添加amount_granted,但是每当我使用$value[0]['amount_granted]时,我只能访问第一个数组对象值,授予的金额等于15,000。如果我使用$value[1]['amount_granted'],它表示未定义偏移量1。我如何将键7中授予的金额相加?谢谢你。

您将需要两个嵌套循环。循环遍历特定月份的所有金额值并求和,然后将其添加到生成的数组中。

片段:

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'));
}

我不知道你的错误发生在哪里,为什么发生,但这样它应该工作。

$str = '{"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"}]}';
$arr = (array)json_decode( $str );
$result = array_map( function( $item ) {
$sum = array_reduce( $item, function( $sum, $item ) { 
return $sum + $item->amount_granted;
}, 0 );
return $sum;
}, $arr );
var_dump( $result );

最新更新