我有一个json_array - $json_array
,这是多级下面的代码"吐出"正确,但有更好的方法吗?我最终得到的是一个结构化的XML文档,其中数组键作为元素名称—但它们必须与json数组的格式相同:
。
[1] => stdClass Object (
[content] => stdClass Object ( array )
[general] => stdClass Object ( array )
[costing] => stdClass Object ( array )
[socialbits] => stdClass Object (array )
[options] => stdClass Object ( (array)
( [0] => stdClass Object ( array(array) ) ) ) )
其中1是主数组键(实际上是来自数据库的id)
$json_array = json_encode($data);
foreach(json_decode($json_array) as $k=>$val) {
foreach($val as $k1=>$v2){
echo $k1;
echo '<br />';
foreach($v2 as $k3=>$v3){
echo $k3;
echo '<br />';
if(is_array($v3)){
foreach($v3 as $k4=>$v4){
foreach($v4 as $k5=>$v5){
echo $k5;
echo '<br />';
foreach($v5 as $k6=>$v6){
echo $v6;
echo '<br />'
}
}
}
}
echo $v3;
}
echo '<br />';
}
echo '<br />';
}
// } OP included the closing brace.
思想和想法最欢迎谢谢-
编辑我不反对编辑代码,但为了其他人,请确保它们是准确的。这是更正后的编辑;
foreach(json_decode($json_array) as $k=>$val) {
foreach($val as $k1=>$v2){
echo $k1;
echo '<br />';
foreach($v2 as $k3=>$v3){
echo $k3;
echo '<br />';
if(is_array($v3)){
foreach($v3 as $k4=>$v4){
foreach($v4 as $k5=>$v5){
echo $k5;
echo '<br />';
foreach($v5 as $k6=>$v6){
echo $v6;
echo '<br />';
}
}
}
} else {
echo $v3;
}
}
echo '<br />';
}
echo '<br />';
}
我认为这可能有助于您实现json的xml表示,这是我认为您从阅读您的问题中需要的:
<?php
echo recurseJson2XML($json_array, true);
function recurseJson2XML($json, $root = false)
{
$element = '';
foreach($json as $key => $value)
{
if(is_numeric($key))
{
$key = 'element_' . $key;
}
$element .= "<{$key}>";
if(is_array($value) || is_object($value))
{
$element .= recurseJson2XML($value);
}
else
{
$element .= $value;
}
$element .= "</{$key}>";
}
if($root)
{
$element = "<?xml version="1.0" ?><root>{$element}</root>";
}
return $element;
}
?>
我测试了,以确保它工作在json解码字符串,它的工作原理…