我正在一个网站上工作,我大量使用json对象。我有一个非常非常大的json对象,从它看起来像包含数十个数组的数组数组...
我一直在做正常的做法:
$obj = json_decode($json,true);
if( $obj == NULL )
echo "JSON NULL!<br>";
else{
echo "here!!<br>";
foreach( $obj as $key=>$val ){
foreach( $val as $k=>$v){
echo "$k <br>";
}
}
}
但输出结果不是很有意义,我发现很难说出能够以$obj["one"]["two"]["three]"
方式访问各个项目的内容是什么。
我已经看了很多,并且在foreach数组中有很多使用json_decode的例子,但是我发现的所有例子都是目标单深度数组。有没有人知道以一种方式输出内容的方法,这种方式可以更容易地分辨包含什么内容?
理想情况下,标签是最具视觉可理解性的东西。
谢谢!
编辑:感谢您的快速回复!我不知道这些标签。我希望我可以选择所有这些作为&#34;最佳答案&#34;!
答案 0 :(得分:4)
$obj = json_decode($json,true);
echo "<pre>".htmlspecialchars(print_r($obj,TRUE))."</pre>\n";
答案 1 :(得分:2)
我同意。这可能看起来不错
$obj = json_decode($json,true);
echo "<pre>";
print_r( $obj );
echo " </pre>";
这也是缩进。
答案 2 :(得分:2)
我建议像:
$obj = json_decode($json, true);
echo '<pre>';
echo print_r($obj, true);
echo '</pre>';
答案 3 :(得分:0)
我猜你有问题,不知道你有多少级别的数组。 你可以这样做一个递归函数:
function echoarray($obj, $i = 0){
foreach($obj as $key => $val){
if(isarray($val)) echoarray($val, $i++);
else echo "$i - $key: $val <br/>";
}
}
而不是原来的foreach
。变量$i
可以告诉您当前的等级。
如果它符合您的需要,请将其作为完成的代码,但作为一个概念。
基本上,如果当前$val
是数组,则会一次又一次地调用函数echoarray
,直到$val
不再是数组。