使用PHP的多维Json转换为字符串

问题描述 投票:0回答:1

我只是玩了几个月的编码,不知道如何解决这个问题,好的,这是问题所在

我有这种类型的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吗?还是有其他不消耗太多内存的方式?

谢谢..

php json
1个回答
0
投票

是,您可以尝试找到一些将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";
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.