Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php foreach中json解码后echo数组出现问题_Php_Arrays_Codeigniter_Json - Fatal编程技术网

Php foreach中json解码后echo数组出现问题

Php foreach中json解码后echo数组出现问题,php,arrays,codeigniter,json,Php,Arrays,Codeigniter,Json,我在数据库的一行中有这个json encode,我希望在foreach中一起使用echo值name\u r和units和price\u change,怎么样 [{ "name_r": "saeed", "units": ["salam", "11", "11", "khobe", "22", "22", "salam"], "price_change": ["33", "33", "33", "44", "44", "44"] }, { "name_r": "sa

我在数据库的一行中有这个
json encode
,我希望在foreach中一起使用echo值
name\u r
units
price\u change
,怎么样

[{
    "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
            }
        }
为什么第5行和第6行的输出是数组,如何修复它

    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>'; 
            }
        }
    }
foreach($query->result()作为$row){
$data=json_decode($row->residence,true);
foreach($数据作为$数据){
echo$datum['name_r']。
; foreach($datum['units']作为$d){ 回显“\t”。$d.
”; } foreach($datum['price_change']为$d){ 回显“\t\t”。$d.
”; } } }
编辑:
我们要恢复的元素是数组,因此有必要循环打印…

也许您可以内爆单位并更改数组的价格,以避免在主数组中使用更多的foreach

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
            }
        }
foreach($query->result()作为$row){
$data=json_decode($row->residence,true);
foreach($数据作为$数据){
echo$datum['name_r']。
; echo内爆(',',$datum['units'])。
';//这是第5行作为字符串,用','分隔 echo内爆(',',$datum['price_change'])。
';///这是第6行,与第5行相同 } }

你应该试试这两种方法,看看哪一种消耗的资源更少。

你还应该解释为什么会发生这种情况。@Alfonso Rubalcava-谢谢,除了foreach没有其他方法吗?Jenifer:有几种方法可以做到
foreach
很简单;)如果您不需要与数据交互,@CoBaLt2760选项也可以使用。
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
            }
        }