Php 将特定密钥上的JSON数据分组
假设JSON数据如下Php 将特定密钥上的JSON数据分组,php,arrays,json,grouping,Php,Arrays,Json,Grouping,假设JSON数据如下 $string = '{ "John": { "status":"Wait", "id":"001" }, "Jennifer": { "status":"Active", "id":"002" }, "James": { "status":"Active", "age":56, "count":10, "progress":0.0029857, "bad":0, "id":"003" },
$string = '{
"John": {
"status":"Wait",
"id":"001"
},
"Jennifer": {
"status":"Active",
"id":"002"
},
"James": {
"status":"Active",
"age":56,
"count":10,
"progress":0.0029857,
"bad":0,
"id":"003"
},
"Adam": {
"status":"Wait",
"age":71,
"count":10,
"progress":0.0029857,
"bad":0,
"id":"004"
}
}';
我需要将数组分组到特定人员的“状态”。就像密钥应该成为“Status”值,数组中人员的id作为它的值。我深入研究了这一点,找到了答案。。
I gone through that deep and found the answer for that..
$result = array();
foreach($json_a as $person => $value)
{
foreach($value as $key => $personal)
{
$key_s = $value['status'];
$id_s = $value['id'];
$result[$key_s][$id_s]['name'] = $person;
$result[$key_s][$id_s][$key] = $personal;
}
}
print "<pre>";
print_r($result);
$result=array();
foreach($json\u作为$person=>$value)
{
foreach($key=>$personal的值)
{
$key_s=$value['status'];
$id_s=$value['id'];
$result[$key\u s][$id\u s]['name']=$person;
$result[$key\u s][$id\u s][$key]=$personal;
}
}
打印“”;
打印(结果);
$jsonData=json\u decode($YourJson,true);
$resultArr=array();
foreach($jsondataas$person=>$value){
foreach($key=>$val的值){
$k=$value['status'];
$i=$value['id'];
$resultArr[$k][$i]['name']=$person;
$resultArr[$k][$i][$key]=$val;
}
}
打印“”;
打印(Resultar);
只有在使用PHP>=5.5
注意:请注意,我从您想要的最终结果中切换了值和键,因为状态中的值不唯一。这将导致值被覆盖,因此结果数组中只有两个元素。您可以看到和之间的区别,那么您尝试了什么?
$jsonData = json_decode($YourJson, true);
$resultArr = array();
foreach($jsonData as $person => $value) {
foreach($value as $key => $val) {
$k = $value['status'];
$i = $value['id'];
$resultArr[$k][$i]['name'] = $person;
$resultArr[$k][$i][$key] = $val;
}
}
print "<pre>";
print_r($resultArr);
$json_string = '{
"John": {
"status":"Wait",
"id":"001"
},
"Jennifer": {
"status":"Active",
"id":"002"
},
"James": {
"status":"Active",
"age":56,
"count":10,
"progress":0.0029857,
"bad":0,
"id":"003"
},
"Adam": {
"status":"Wait",
"age":71,
"count":10,
"progress":0.0029857,
"bad":0,
"id":"004"
}
}';
$json_arr = json_decode($json_string, true);
$result = array_column($json_arr, 'status', 'id');