[英]Convert multidimensional array into comma separated group in json
我有这个数组:
array(7) {
["Locate"]=>
array(2) {
[0]=>
array(3) {
[0]=>
string(16) "Self Set - Short"
[1]=>
string(6) "Locate"
[2]=>
string(4) "1701"
}
[1]=>
array(3) {
[0]=>
string(15) "Self Set - Long"
[1]=>
string(6) "Locate"
[2]=>
string(4) "1521"
}
}
["Step 1 - Campus"]=>
array(2) {
[0]=>
array(3) {
[0]=>
string(16) "Self Set - Short"
[1]=>
string(15) "Step 1 - Campus"
[2]=>
string(4) "1471"
}
[1]=>
array(3) {
[0]=>
string(15) "Self Set - Long"
[1]=>
string(15) "Step 1 - Campus"
[2]=>
string(4) "1239"
}
}
["Step 2 - Date"]=>
array(2) {
[0]=>
array(3) {
[0]=>
string(16) "Self Set - Short"
[1]=>
string(13) "Step 2 - Date"
[2]=>
string(3) "717"
}
[1]=>
array(3) {
[0]=>
string(15) "Self Set - Long"
[1]=>
string(13) "Step 2 - Date"
[2]=>
string(3) "607"
}
}
["Step 3 - Time"]=>
array(2) {
[0]=>
array(3) {
[0]=>
string(16) "Self Set - Short"
[1]=>
string(13) "Step 3 - Time"
[2]=>
string(3) "508"
}
[1]=>
array(3) {
[0]=>
string(15) "Self Set - Long"
[1]=>
string(13) "Step 3 - Time"
[2]=>
string(3) "436"
}
}
}
我正在使用它将其导出为json:
$data = array();
foreach( $group as $key => $value ) {
foreach($value as $key2) {
$data[] = array(
'event' => $key,
$key2[0] => $key2[2],
);
}
}
echo json_encode( $data );
我当前的输出是:
[{"event":"Locate","Self Set - Short":"1698"},{"event":"Locate","Self Set - Long":"1515"},{"event":"Step 1 - Campus","Self Set - Short":"1469"},{"event":"Step 1 - Campus","Self Set - Long":"1230"},{"event":"Step 2 - Date","Self Set - Short":"717"},{"event":"Step 2 - Date","Self Set - Long":"603"},{"event":"Step 3 - Time","Self Set - Short":"508"},{"event":"Step 3 - Time","Self Set - Long":"433"},{"event":"Submit Button","Self Set - Short":"343"},{"event":"Submit Button","Self Set - Long":"309"},{"event":"Reschedule - New","Self Set - Short":"18"},{"event":"Reschedule - New","Self Set - Long":"21"},{"event":"Reschedule - Keep","Self Set - Short":"3"},{"event":"Reschedule - Keep","Self Set - Long":"3"}]
我需要它像这样导出:
[{"event":"Locate","Self Set - Short":"1698", "Self Set - Long":"1515"},{"event":"Step 1 - Campus","Self Set - Short":"1469","Self Set - Long":"1230"},{"event":"Step 2 - Date","Self Set - Short":"717","Self Set - Long":"603"},{"event":"Step 3 - Time","Self Set - Short":"508","Self Set - Long":"433"},{"event":"Submit Button","Self Set - Short":"343","Self Set - Long":"309"},{"event":"Reschedule - New","Self Set - Short":"18","Self Set - Long":"21"},{"event":"Reschedule - Keep","Self Set - Short":"3","Self Set - Long":"3"}]
最终结果需要使用两个子数组,并用主数组键将它们逗号分隔,而不是按照我需要的每个集合创建组。任何帮助都将是很大的!
根据您的初始数组,我编写了以下代码:
<?php
$data = array(
"Locate"=>array(
0=>array(
0=>"Self Set - Short",
1=>"Locate",
2=>"1701"
),
1=>array(
0=>"Self Set - Long",
1=>"Locate",
2=>"1521"
)
),
"Step 1 - Campus"=>array(
0=>array(
0=>"Self Set - Short",
1=>"Step 1 - Campus",
2=>"1471"
),
1=>array(
0=>"Self Set - Long",
1=>"Step 1 - Campus",
2=>"1239"
)
),
"Step 2 - Date"=>array(
0=>array(
0=>"Self Set - Short",
1=>"Step 2 - Date",
2=>"717"
),
1=>array(
0=>"Self Set - Long",
1=>"Step 2 - Date",
2=>"607"
)
),
"Step 3 - Time"=>array(
0=>array(
0=>"Self Set - Short",
1=>"Step 3 - Time",
2=>"508"
),
1=>array(
0=>"Self Set - Long",
1=>"Step 3 - Time",
2=>"436"
)
)
);
echo "<pre/>";print_r($data);
$final_data = array();
foreach ($data as $dat){
foreach($dat as $key=>$value){
$final_data[$value[1]]['event'] = $value[1];
$final_data[$value[1]][$value[0]] = $value[2];
}
}
$final_data = json_encode(array_values($final_data));
echo ($final_data);
?>
输出: -https : //eval.in/555678
注意:-
1.您所需的json
值是否已从原始数组更改?
2.最终json
还具有更多初始数组中不存在的值。
检查自己并纠正。 谢谢
迟到总比不到好...
这是一种处理数据的更直接的方法,不需要利用临时关联密钥(稍后将删除)。
foreach()
循环并声明groupname
和双行set
的数据。 $data
)的一维阵列,其中包括硬编码的第一元件的event
与所述groupname
值以及动态地生成关联元素(其具有从导出的密钥0
列值和值从2
倍的值)。 +
只是array_merge()
的简洁/无功能版本, array_merge()
预期在关联元素上使用。 array_column()
的原因是它已被添加到PHP中,并且一旦循环结束,输出数组便立即准备好用于json_encode()
。 event
数据; 即使将更多行添加到$set
,此方法也将按预期运行。 代码( 演示 )
$group = [
"Locate" => [
["Self Set - Short", "Locate", "1701"],
["Self Set - Long", "Locate", "1521"]
],
"Step 1 - Campus" => [
["Self Set - Short", "Step 1 - Campus", "1471"],
["Self Set - Long", "Step 1 - Campus", "1239"]
],
"Step 2 - Date" => [
["Self Set - Short", "Step 2 - Date", "717"],
["Self Set - Long", "Step 2 - Date", "607"]
],
"Step 3 - Time" => [
["Self Set - Short", "Step 3 - Time", "508"],
["Self Set - Long", "Step 3 - Time", "436"]
]
];
foreach ($group as $groupname => $set) {
$data[] = ['event' => $groupname] + array_column($set, 2, 0);
}
//var_export($data);
echo json_encode($data);
输出:
[{"event":"Locate","Self Set - Short":"1701","Self Set - Long":"1521"},{"event":"Step 1 - Campus","Self Set - Short":"1471","Self Set - Long":"1239"},{"event":"Step 2 - Date","Self Set - Short":"717","Self Set - Long":"607"},{"event":"Step 3 - Time","Self Set - Short":"508","Self Set - Long":"436"}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.