[請益] json_decode後的資料如何使用?

看板PHP作者 (車市回溫了嗎?回溫在哪裡)時間10年前 (2014/03/10 10:06), 編輯推噓4(4016)
留言20則, 6人參與, 最新討論串1/1
$content = file_get_contents($siteurl); $data = json_decode($content); echo $data[0]->title." ".$data[0]->showinfo[0]->time; 資料都出不來,是用法有錯誤嗎? 用print_r顯示$data的結果(只貼上第一筆) Array ( [0] => stdClass Object ( [version] => 1.4 [UID] => 526aa481e44da0ea8d4168c4 [title] => 2014TIFA-拉布蘭之心人聲音樂會 [category] => 1 [showInfo] => Array ( [0] => stdClass Object ( [time] => 2014/03/07 19:30:00 [location] => 台北市中山南路21-1號 [locationName] => 國家演奏廳 [onSales] => Y [price] => 400,500 [latitude] => 25.0348366 [longitude] => 121.5176314 ) [1] => stdClass Object ( [time] => 2014/03/08 19:30:00 [location] => 台北市中山南路21-1號 [locationName] => 國家演奏廳 [onSales] => Y [price] => 400,500 [latitude] => 25.0348366 [longitude] => 121.5176314 ) ) [showUnit] => [discountInfo] => [descriptionFilterHtml] => [imageUrl] => [masterUnit] => Array ( [0] => 國立中正文化中心 ) [subUnit] => Array ( [0] => ) [supportUnit] => Array ( [0] => ) [otherUnit] => Array ( [0] => 主要藝文支持:JTI ) [webSales] => http://www.artsticket.com.tw/CKSCC2005/Product/Product00/ProductsDetailsPage.aspx?ProductID=oK4bYlG1GfzBcHkQto2QJ [sourceWebPromote] => http://tifa.ntch.edu.tw/ [comment] => [editModifyDate] => 2013/10/28 14:46:13 [sourceWebName] => 兩廳院售票網 [startDate] => 2014/03/07 [endDate] => 2014/03/08 [status] => success [total] => 111 ) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.108.82

03/10 10:19, , 1F
先 json_decode($content, true); 試試
03/10 10:19, 1F

03/10 10:31, , 2F
同樓上 解完後用陣列方式取
03/10 10:31, 2F

03/10 10:45, , 3F
stdObject 取值方式是 $object->column_name
03/10 10:45, 3F

03/10 10:45, , 4F
json_decode 不見得需要轉成 array 就純粹使用差異
03/10 10:45, 4F

03/10 10:46, , 5F
另外就是建議用 foreach 去列舉資料
03/10 10:46, 5F

03/10 11:01, , 6F
因為如果直接 $object[0]->object2[0]->column_name
03/10 11:01, 6F

03/10 11:02, , 7F
在部分資料不齊全下會報錯
03/10 11:02, 7F

03/10 11:22, , 8F
json_decode 預設是解成物件, 不過個人使用經驗上解成陣列
03/10 11:22, 8F

03/10 11:22, , 9F
比較方便使用, 因為解成物件的話 底下可能會有物件包陣列的
03/10 11:22, 9F

03/10 11:23, , 10F
情形 資料形態不一致 處理起來很雜很討厭
03/10 11:23, 10F

03/10 11:25, , 11F
1樓的做法是解成陣列的做法 我也會這麼做
03/10 11:25, 11F

03/10 11:31, , 12F
我會用預設的,因為還是可以用foreach取
03/10 11:31, 12F

03/10 11:31, , 13F
另外,開發中只要出錯,就會知道取值的方式錯誤了
03/10 11:31, 13F

03/10 11:32, , 14F
Array通常要用foreach, Object通常是要個別取值
03/10 11:32, 14F

03/10 11:34, , 15F
當然這只是習慣問題啦, 其實兩個方法都可以用XD
03/10 11:34, 15F

03/10 13:03, , 16F
這不光是習慣問題而已, 解成陣列的確比物件好處理得多 尤其
03/10 13:03, 16F

03/10 13:04, , 17F
若是不均勻的多層樹 或是需要遞迴處理的 物件夾雜陣列的結構
03/10 13:04, 17F

03/10 13:04, , 18F
真的會搞死人
03/10 13:04, 18F

03/10 13:24, , 19F
↑樓上+1,最近被遞迴樹搞到XD
03/10 13:24, 19F

03/10 17:48, , 20F
感謝各位回覆,已解決,轉成陣列方式好用很多!!!
03/10 17:48, 20F
文章代碼(AID): #1J7HuKBf (PHP)