PHP json从数据库解码
问题描述:
我在数据库中有这个json encode
,我想只是回声值name_r
在foreach
,它是怎么回事?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
}
答
假设您提供的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开发人员,所以我不确定我的语法是否正确。但希望你明白这个主意。
* residence *列是否包含发布的JSON数据? – Gumbo