JSON

decode及foreach使用总结

字号+ 作者:H5之家 来源:H5之家 2017-12-19 13:13 我要评论( )

文章导航 上一篇 下一篇 php中json_decode及foreach使用总结 ?php $arr=array(); //例子1 $json_str= {ret:OK,questions:{ 1:{qid:1,title:\u95ee\u98981111, answers:{ 1:{cid:1,title:A,cont:\u7b54\u68481-1,iscorrect:1,qid:1}, 2:{cid:2,title:B,cont:\

文章导航 上一篇 下一篇 php中json_decode及foreach使用总结

<?php
$arr=array();
//例子1
$json_str= ‘{“ret”:”OK”,”questions”:{
“1”:{“qid”:”1″,”title”:”\u95ee\u98981111″,
“answers”:{
“1”:{“cid”:”1″,”title”:”A”,”cont”:”\u7b54\u68481-1″,”iscorrect”:”1″,”qid”:”1″},
“2”:{“cid”:”2″,”title”:”B”,”cont”:”\u7b54\u68481-2″,”iscorrect”:”0″,”qid”:”1″},
“3”:{“cid”:”3″,”title”:”C”,”cont”:”\u7b54\u68481-3″,”iscorrect”:”0″,”qid”:”1″}
}},
“2”:{“qid”:”2″,”title”:”\u95ee\u98982222″,
“answers”:{“5”:{
“cid”:”5″,”title”:”A”,”cont”:”\u7b54\u68482-1″,”iscorrect”:”0″,”qid”:”2″},
“6”:{“cid”:”6″,”title”:”B”,”cont”:”\u7b54\u68482-2″,”iscorrect”:”0″,”qid”:”2″},
“7”:{“cid”:”7″,”title”:”A”,”cont”:”aa”,”iscorrect”:”0″,”qid”:”2″},
“8”:{“cid”:”8″,”title”:”D”,”cont”:”\u7b54\u68482-4″,”iscorrect”:”0″,”qid”:”2″}}}}}’;
// 相关错误反馈
// Notice: Undefined offset: 1
// Notice: Trying to get property of non-object
// Notice: Undefined offset: 0
// Notice: Array to string conversion

//json_decode不加参数true,转成的就不是array,而是对象 [questions] => stdClass Object
$arr=json_decode($json_str,true);
// echo “<pre>”;print_r($arr);exit;

//json_decode不加参数true,下面取值出错: Fatal error: Cannot use object of type stdClass as array in
//通过key:ret取值
echo $arr[“ret”];echo “<br/>”;
$arr_q=$arr[“questions”];
//通过key取值
echo ” 1-title:”;echo $arr[“questions”][“1”][“answers”][“1”][“title”];
echo ” 8-title:”;echo $arr[“questions”][“2”][“answers”][“8”][“title”];
$arr_q1a=$arr[“questions”][“1”][“answers”];
$arr_q2a=$arr[“questions”][“2”][“answers”];
echo “<br>”;echo” q1a:”; var_dump($arr_q1a);

$m=count($arr_q1a);echo “m:$m “;
$n=count($arr_q2a);echo “n:$n “;

//这个打印就有值 t1:1 t1:2 t1:3
for($i=1;$i<=$m;$i++){
echo ” t1:”;echo $arr_q1a[$i][‘cid’];
}
//这种for会漏值 T2: T2: T2: T2: 按说应该是 5 6 7 8
for($i=1;$i<=$n;$i++){
echo ” T2:”;echo $arr_q2a[$i][‘cid’];
}
//for循环key和value转换就很不方便
foreach ($arr_q2a as $key => $value){
echo “questions 2 : “.$key.”->”.$value.” “;
}
//多维数组,最好用foreach方便
foreach ($arr_q as $key1=>$value1){
echo “<br>”; echo $key1;
foreach ($value1[‘answers’] as $key2=>$value2){
echo “<br>”; echo $key2.”->”.$value2;
foreach ($value2 as $key3=>$value3){
echo $key3.”->”.$value3.” “;
}
}
}

//例子2
$json= ‘[{“id”:”1″,”name”:”\u5f20\u96ea\u6885″,”age”:”27″,”subject”:”\u8ba1\u7b97\u673a\u79d1\u5b66\u4e0e\u6280\u672f”},{“id”:”2″,”name”:”\u5f20\u6c9b\u9716″,”age”:”21″,”subject”:”\u8f6f\u4ef6\u5de5\u7a0b”}]’;

// $students= json_decode($json,true);//得到的是 array
//echo “<pre>”;print_r($students);
// for($i=0;$i<count($students);$i++){
// echo “姓名:”.$students[$i][‘name’].”&nbsp;&nbsp;&nbsp;年 龄:”.$students[$i][‘age’].”&nbsp;&nbsp;&nbsp;专 业:”.$students[$i][‘subject’].”<br />”;
// }
$students= json_decode($json);//得到的是 object
foreach($students as $obj){
echo “姓名:”.$obj->name.”年龄:”.$obj->age.”专业:”.$obj->subject.”<br/>”;
}
?>

总结,php中的多维数组,最好用foreach

此条目由admin发表在网站开发分类目录,并贴了php标签。将固定链接加入收藏夹。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 好好学习,改变自己

    好好学习,改变自己

    2017-12-10 15:00

  • (json学习二)使用json需要导入的jar包

    (json学习二)使用json需要导入的jar包

    2017-12-07 14:21

  • thinkPHP5使用laypage分页插件实现列表分页功能

    thinkPHP5使用laypage分页插件实现列表分页功能

    2017-12-06 18:26

  • java怎么使用json?

    java怎么使用json?

    2017-12-03 09:00

网友点评