我只是玩了几个月的编码,不知道如何解决这个问题,好的,这是问题所在
我有这种类型的json
{
"PC": {
"Acer": {
"Series 1" : "Series 1",
"Series 2" : "Series 2",
"Series 3" : "Series 3",
},
"Lenovo": {
"Series 1" : "Series 1",
"Series 2" : "Series 2",
"Series 3" : "Series 3",
}
},
"Apple": {
"Macbook": {
"Series 1" : "Series 1",
"Series 2" : "Series 2",
"Series 3" : "Series 3",
}
"Iphone": {
"Series 1" : "Series 1",
"Series 2" : "Series 2",
"Series 3" : "Series 3",
}
},
}
我的问题是如何使这个多维json变成这样的东西
PC, Acer, Series 1
PC, Acer, Series 2
PC, Acer, Series 3
PC, Lenovo, Series 1
PC, Lenovo, Series 2
PC, Lenovo, Series 3
Apple, Macbook, Series 1
Apple, Macbook, Series 2
Apple, Macbook, Series 3
Apple, Iphone, Series 1
Apple, Iphone, Series 2
Apple, Iphone, Series 3
我应该使用多foreach吗?还是有其他不消耗太多内存的方式?
谢谢..
是,您可以尝试找到一些将JSON转换为正则表达式的解决方案。当结构不同或根本没有定义时,您也可以使用选项。然后,您需要一些智能的递归解决方案。
[当您了解结构并使用PHP json解码器和foreach循环时,这是一个简单的解决方案。
首先,您必须修复json,它有错误,PHP解码器不会处理:
$json = "{
\"PC\": {
\"Acer\": {
\"Series 1\" : \"Series 1\",
\"Series 2\" : \"Series 2\",
\"Series 3\" : \"Series 3\"
},
\"Lenovo\": {
\"Series 1\" : \"Series 1\",
\"Series 2\" : \"Series 2\",
\"Series 3\" : \"Series 3\"
}
},
\"Apple\": {
\"Macbook\": {
\"Series 1\" : \"Series 1\",
\"Series 2\" : \"Series 2\",
\"Series 3\" : \"Series 3\"
},
\"Iphone\": {
\"Series 1\" : \"Series 1\",
\"Series 2\" : \"Series 2\",
\"Series 3\" : \"Series 3\"
}
}
}";
现在您可以使用给出的格式和预期结果来运行解决方案:
$data = json_decode($json, true);
foreach($data as $system => $brand) {
foreach($brand as $name => $series) {
foreach($series as $val) {
echo "$system, $name, $val\n";
}
}
}