php - 将值从 json 键/值对重新分配给下一个键
问题描述
我得到了一个 json 文件,如下所示(显示几行中的一个,看起来相同):
"description 1": {
"year0": "49",
"year1": "48",
"year2": "876786",
"year3": "1234"
},
使用 PHP,我需要将每个值向下移动,以便 year0 的值成为 year1 的值,依此类推(第 3 年的值将被删除,而 year0 将为空,如下所示:
"description 1": {
"year0": "",
"year1": "49",
"year2": "48",
"year3": "876786"
},
有没有比遍历每个键值、将其保存到变量并将其分配给下一个键等更快的方法来处理数据?
解决方案
没有办法更快地做到这一点,但我认为有一种简单易读的方法,我认为最好的方法是收集方法mapWithKeys()
。它允许您进行数组映射,但在此过程中更改键。在我看来这会更容易,而不是考虑将每个变量向下移动一个位置,只需将一年添加到键并记住将第一年添加到新数组中。
$years = collect(json_decode('json')->description_1);
$firstYear = null;
$years = $years->mapWithKeys(function ($value, $key) use (&$firstYear) {
if (! $firstYear) {
$firstYear = $key;
}
$year = intval(Str::after('year', $key)) + 1;
return ['year' . $year => $value];
})->all();
$years[$firstYear] = '';
推荐阅读
- python - 熊猫按高于阈值的唯一值分组
- pyspark - 在单个 Glue 作业中的多个表的源端运行 SQL 脚本,并具有与 S3 对应的表命名约定
- node.js - 我是nodejs的新手,我一直收到这个错误
- javascript - Node.js - 将参数从客户端传递到端点
- python - 如何根据另一个数据框中的查找表替换数据框中的值
- javascript - 脚本消息未在 asp.net 中显示
- python-3.x - 从 pandas 中的成对行条目创建一个新列
- python-3.x - 使用 pandas 消除 for 循环
- c# - 使用 c# 泛型扩展方法对类而不是集合进行操作
- python - 如何使用鼠标事件绘制多个多边形