Проблема в массиве эхо после json декодирования в foreach - PullRequest
0 голосов
/ 18 сентября 2011

У меня есть это json encode в одной строке базы данных, и я хочу, чтобы эхо-значения name_r и units и price_change вместе в 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:

        foreach ($query->result() as $row){
            $data = json_decode($row->residence,true);
            foreach($data as $datum){
            echo $datum['name_r'].'<br>';
            echo $datum['units'].'<br>'; //This is line 5
            echo $datum['price_change'].'<br>'; ///This is line 6
            }
        }

этот вывод php-кода именно этот

saeed
Array //Output line 5
Array //Output line 6
salavat
Array //Output line 5
Array //Output line 6

Почему выходные данные в строках 5 и 6 Array, как это исправить?

Ответы [ 2 ]

1 голос
/ 18 сентября 2011

Попробуйте:

    foreach ($query->result() as $row){
        $data = json_decode($row->residence,true);
        foreach($data as $datum){
            echo $datum['name_r'].'<br>';
            foreach($datum['units'] as $d){
                echo "\t".$d.'<br>'; 
            }
            foreach($datum['price_change'] as $d){
                echo "\t\t".$d.'<br>'; 
            }
        }
    }

РЕДАКТИРОВАНИЕ: Элементы, которые мы хотим восстановить, являются массивами, поэтому для печати необходимо выполнить цикл ...

0 голосов
/ 18 сентября 2011

Может быть, вы могли бы взорвать блоки и массивы price_change, чтобы избежать большего доступа внутри основного.

foreach ($query->result() as $row){
            $data = json_decode($row->residence,true);
            foreach($data as $datum){
            echo $datum['name_r'].'<br>';
            echo implode(',', $datum['units']).'<br>'; //This is line 5 as string, separated by ','
            echo implode(',', $datum['price_change']).'<br>'; ///This is line 6, same as line 5
            }
        }

Следует попробовать два метода и посмотреть, какой из них потребляет меньше ресурсов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...