PHP json从数据库解码

时间:2011-09-18 14:49:56

标签: php codeigniter json

我在数据库中有json encode,我只想在name_r中使用回音值foreach,它是怎么回事?

[{
    "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
    }

3 个答案:

答案 0 :(得分: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'];
    }
}

答案 1 :(得分:2)

您在作业中使用了[]。这意味着json_decode的结果将被推送到数组的末尾。

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

答案 2 :(得分:0)

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

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

我不是PHP开发人员,所以我不确定我的语法是否正确。但希望你能得到这个想法。