2011-09-18 72 views
1

我在數據庫中有這個json encode,我想只是回聲值name_rforeach,它是怎麼回事?PHP json從數據庫解碼

[{ 
    "name_r": "saeed", 
    "units": ["salam", "11", "11", "khobe", "22", "22", "salam"], 
    "price_change": ["33", "33", "33", "44", "44", "44"] 
}, { 
    "name_r": "salavat", 
    "units": ["55", "55", "khobe", "66", "66"], 
    "price_change": ["77", "77", "77", "88", "88", "88", "99", "99", "99"] 
}] 

這是我的PHP,有錯誤(Message: Undefined index: name_r - Line Number: 179):

$query = $this->db->query("SELECT * FROM table ORDER BY id desc"); 
    $data = array(); 
    foreach ($query->result() as $row) 
    { 
     $data[] = json_decode($row->residence,true); 
     echo $data["name_r"].'<br>'; //Line Number: 179 
    } 
+0

* residence *列是否包含發佈的JSON數據? – Gumbo

回答

3

假設您提供的json_encoded數據存儲在數據庫的一行中,json_decode將爲您提供一組數組。要回顯所有name_r字段,您需要:

foreach ($query->result() as $row){ 
    $data = json_decode($row->residence,true); 
    foreach($data as $datum){ 
     echo $datum['name_r']; 
    } 
} 
+0

沒錯。謝謝 –

2

你在你的分配使用[]。這意味着json_decode的結果將被推到陣列的末尾。

使用var_dump($data)應該可以幫助您瞭解陣列的實際外觀,並自行解決問題。

0

假設您顯示的示例JSON是來自單個記錄的數據。數據是一個對象數組,因此您需要一個循環遍歷數組的每個返回記錄的內部循環。

foreach ($row->residence as &$value) { 
    $data = json_decode($value,true); 
    echo $data["name_r"].'<br>'; 
} 

我不是PHP開發人員,所以我不確定我的語法是否正確。但希望你明白這個主意。