PHP json从数据库解码

PHP json从数据库解码

问题描述:

我在数据库中有这个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

假设您提供的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

没错。谢谢 –

你在你的分配使用[]。这意味着json_decode的结果将被推到阵列的末尾。

使用var_dump($data)应该可以帮助您了解阵列的实际外观,并自行解决问题。

假设您显示的示例JSON是来自单个记录的数据。数据是一个对象数组,因此您需要一个循环遍历数组的每个返回记录的内部循环。

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

我不是PHP开发人员,所以我不确定我的语法是否正确。但希望你明白这个主意。