php - 从父行到子行的数组模式
问题描述
我的数组是:
[
"0"=>["id"=>111,"name"=>"abc","value"=>"s1"],
"1"=>["id"=>"","name"=>"","value"=>"s2"],
"2"=>["id"=>"","name"=>"","value"=>"s3"],
"3"=>["id"=>"222","name"=>"xyz","value"=>"a1"],
"4"=>["id"=>"","name"=>"","value"=>"a2"],
"5"=>["id"=>"","name"=>"","value"=>"a3"],
"6"=>["id"=>"","name"=>"","value"=>"a4"]
];
我需要这种格式的数组:
[
"0"=>["id"=>111,"name"=>"abc","value"=>["s1","s2","s3"],
"1"=>["id"=>"222","name"=>"xyz","value"=>"a1","a2","a3","a4"],
];
解决方案
<?php
$arr = [
"0"=>["id"=>111,"name"=>"abc","value"=>"s1"],
"1"=>["id"=>"","name"=>"","value"=>"s2"],
"2"=>["id"=>"","name"=>"","value"=>"s3"],
"3"=>["id"=>"222","name"=>"xyz","value"=>"a1"],
"4"=>["id"=>"","name"=>"","value"=>"a2"],
"5"=>["id"=>"","name"=>"","value"=>"a3"],
"6"=>["id"=>"","name"=>"","value"=>"a4"]
];
// An array to store the results
$results = [];
// Store the index of the current results element
// Start with -1 because going to begin with an increment
$index = -1;
foreach ($arr as $element) {
if ($element["id"] !== "") { // If contains an ID field
// begin with increment; initial value must be -1
$index++;
// Create new results element
$results[$index] = [
"id" => $element["id"],
"name" => $element["name"],
"value" => [
$element["value"],
],
];
}
else { // If does not contain an ID field
// Add another "value" to existing element at $index
$results[$index]["value"][] = $element["value"];
}
}
var_dump(json_encode($results));
输出:
[
{"id":111,"name":"abc","value":["s1","s2","s3"]},
{"id":"222","name":"xyz","value":["a1","a2","a3","a4"]}
]
推荐阅读
- php - 从 Couchbase 流式传输数据
- python - 从列表中获取数据
- flutter - Flutter:按日期读取和合并 Firestore 数据
- json - 使用 FOR JSON 将平面 SQL 行转换为嵌套的 JSON 数组
- java - 将 JSON 解析为 TextInputEditText 字段
- macos - logcheck 命令不起作用,但 log check-test 有效
- single-sign-on - 以角度登录keycloak后,我无法导航到仪表板页面
- java - 在 java eclipse 中导入外部库
- xcode - React-Native 无法手动链接 XCode 上的库
- c# - 如何建立与远程数据库 sql server 的连接?