[請益] PHP抓json後使用foreach問題

作者: yongb (火系見習魔法師 )   2016-11-01 23:02:38
最近用PHP玩json的時候發現
要使用foreach的時候居然無法迴圈列出
以下是code
<?php
1 $json='
2 {
3 "test":[
4 {
5 "pid":34,
6 "name":cat
7 },
8 {
9 "pid":35,
10 "name":dog
11 }
12 ]
13 }';
14
15 $testjson=json_decode($json);
16 echo $testjson->test[0]->pid."<br/>";
17 foreach($testjson as $key =>$value){
18 $value[0]->pid;
19 }
?>
一開始15行傳到testjson是物件
可是當使用foreach後傳到$value的時候就變成一種奇怪的狀態
用var_dump看了一下
似乎是物件在陣列裏面?
更讓我驚訝的是$key裏面居然是test冏
然後pid只跑出一筆,可是不$value[0]又會錯誤,被那個test卡著
我查了一下有兩個解決方式
1.改15行的json_decode($json,true)直接變成陣列
可是我又很不想用陣列
2.使用for迴圈但看起來好丑,也不太想用
各位大大有別的思路嗎? 小弟在此先謝過
作者: MOONRAKER (㊣牛鶴鰻毛人)   2016-11-01 23:35:00
當然是物件在陣列裡面,你json寫得明明白白到底是有什麼奇怪什麼囧的老實說,在學習階段,隨便你用什麼都無所謂反正沒有犯錯是學不到東西的,等你寫大一點的程式再來檢討,那之前你怎麼「很不想」「不太想」都悉聽尊便
作者: shadowjohn (轉角遇到愛)   2016-11-01 23:46:00
剛好跟你相反,我是必加 ,true
作者: zoko741235 (台北金城武)   2016-11-02 01:35:00
foreach($testjson->test as ... )

Links booklink

Contact Us: admin [ a t ] ucptt.com