当我们压缩到视图时,如何对从控制器获取的 JSON 数组中的数据求和(Laravel)
Posted
技术标签:
【中文标题】当我们压缩到视图时,如何对从控制器获取的 JSON 数组中的数据求和(Laravel)【英文标题】:How to sum data in array of JSON that get from controller when we compact to the view (Laravel) 【发布时间】:2018-04-06 20:03:05 【问题描述】:我遇到了一个问题。在下面给出的 JSON 数组中:
$results = [
proj_name: rental,
act_name: income,
amount: "1000"
,
proj_name: rental,
act_name: expend,
amount: "-2000"
,
proj_name: rental,
act_name: initiall,
amount: "3000"
,
proj_name: rental,
act_name: income,
amount: "4000"
,
proj_name: rental,
act_name: expend,
amount: "-5000"
,
proj_name: rental,
act_name: initial,
amount:"6000"
,
proj_name: loan,
act_name: income,
amount: "7000"
,
proj_name: loan,
act_name: expend,
amount: "-8000"
,
proj_name: loan,
act_name: initial,
amount: "9000"
,
proj_name: loan,
act_name: income,
amount: "10000"
,
proj_name: loan,
act_name: expend,
amount: "-11000"
,
proj_name: loan,
act_name: initial,
amount:"12000"
]
我们可以看到这里有两个proj_name
,分别是rental
和loan
。
事务还进一步分为income
、expend
和initial
3 个活动。
我的问题是如何循环通过$results
数组来计算我上面列出的每种交易类型的总和。我希望输出是这样的:
|------------------|
| rental |
|------------------|
|income : 5000 |
|expend : -7000 |
|initial : 9000 |
|------------------|
|Sum Rental: 7000 |
|------------------|
|
|------------------|
| loan |
|------------------|
|income : 17000 |
|expend : -19000 |
|initial : 21000 |
|------------------|
|Sum Loan: 19000 |
|------------------|
【问题讨论】:
将 JSON 解码为一个数组,然后使用 php 的众多数组函数之一将该数组缩减为一个数字,我建议array_reduce()
。
请问你能实现吗?我不知道它会怎样.....
【参考方案1】:
假设 JSON 数组已被解码为 $json
,以下应该可以工作。
$output = [];
foreach ($json as $item)
if (!isset($output[$item->proj_name]))
$output[$item->proj_name] = [
'income' => 0,
'expend' => 0,
'initial' => 0,
'total' => 0
];
$output[$item->proj_name][$item->act_name] += $item->amount;
foreach ($output as $type)
$type['total'] = $type['initial'] + $type['income'] - $type['expend'];
它可能需要一些小的调整,但这应该遍历您的 JSON 数组并通过匹配的任何项目来增加每个值。
【讨论】:
感谢您的回答,我确实实现了它,但即使我能理解您的回答的逻辑,它也不起作用......请您更清楚地弄清楚您的答案.. .... 有什么不好的?你有没有得到任何错误? 正在处理您的答案,这是我们有超过 2 个proj_name
的 $output
成像的修复数组,谢谢......
我更新了代码,以编程方式将 proj_names 构建到输出数组中,看看效果是否更好。
哇.... 非常好,感谢您的跟进,income
、expend
和 initial
的值工作正常,但 total
的总和仍然无法为 0 . 你能不能把数组做成这样的形式:` $output = proj_name: "rental", Income: 5000, Expend: -7000, Initial: 9000, Total: 7000 , proj_name: "loan", Income: 17000, Expend: -19000, Initial: 21000, Total: 19000 `我试图改变但失败了我弄乱了数组的索引以上是关于当我们压缩到视图时,如何对从控制器获取的 JSON 数组中的数据求和(Laravel)的主要内容,如果未能解决你的问题,请参考以下文章
如何在滚动到顶部同时添加侦听器时对从 Firestore 获取的聊天进行分页
当我们在 iOS 中使用 Twitter 登录时,如何将一个视图控制器移动到另一个视图控制器
如何在加载视图控制器之前使用来自服务器/数据库的数据来显示视图控制器
swift 2.2中api(json)没有数据时如何显示警报