Php 如何显示多维数组第二级中的json值?

Php 如何显示多维数组第二级中的json值?,php,arrays,json,Php,Arrays,Json,在解决此代码时遇到问题。这些是阵列 Array ( [0] => stdClass Object ( [id] => 1 [name] => delux [price] => 213 [description] => [tv] => 0 [breakfast] => 0 [park] => 0

在解决此代码时遇到问题。这些是阵列

Array ( [0] => stdClass Object ( [id] => 1 [name] => delux [price] => 213 [description] => [tv] => 0 [breakfast] => 0 [park] => 0 [wifi] => 0 [ac] => 0 [occupancy] => [size] => [view] => [service] => [terrace] => 0 [pickup] => 0 [internet] => 0 [gym] => 0 [note] => [room_details] => {"img":["images/logo2.png","images/logo.png"]} ) [1] => stdClass Object ( [id] => 2 [name] => hjghj [price] => 234 [description] => [tv] => 0 [breakfast] => 0 [park] => 0 [wifi] => 0 [ac] => 0 [occupancy] => [size] => [view] => [service] => [terrace] => 0 [pickup] => 0 [internet] => 0 [gym] => 0 [note] => [room_details] => ) ) 排列 ( [0]=>stdClass对象 ( [id]=>1 [名称]=>delux [价格]=>213 [说明]=> [tv]=>0 [早餐]=>0 [停车]=>0 [wifi]=>0 [ac]=>0 [入住率]=> [大小]=> [查看]=> [服务]=> [平台]=>0 [拾取]=>0 [互联网]=>0 [健身房]=>0 [注]=> [room_details]=>{“img”:[“images/logo2.png”,“images/logo.png”]} ) [1] =>stdClass对象 ( [id]=>2 [名称]=>hjghj [价格]=>234 [说明]=> [tv]=>0 [早餐]=>0 [停车]=>0 [wifi]=>0 [ac]=>0 [入住率]=> [大小]=> [查看]=> [服务]=> [平台]=>0 [拾取]=>0 [互联网]=>0 [健身房]=>0 [注]=> [房间详细信息]=> ) ) 我想回显room_details下的per图像,如下所示

images/logo2.png images/logo.png 图像/logo2.png
图片/logo.png

这是我的密码

foreach ($roomandsuits as $i => $item) { $array_links = json_decode($item->room_details, true); { foreach ($array_links as $key => $value) { foreach ($value as $content) { echo $content; } } } } foreach($roomandsuites as$i=>$item){ $array_links=json_decode($item->room_details,true){ foreach($key=>$value的数组链接){ foreach($value as$content){ echo$内容; } } } } 第三行出现错误,显示如下

images/logo2.png images/logo.png 图片/logo2.png 图片/logo.png 警告:为第10行的C:\xampp\htdocs\resort\modules\mod\u roomandsuits\tmpl\default.php中的foreach()提供的参数无效 图片/logo.png


在将数组传递给
foreach
之前,需要检查您正在使用的数组

$roomandsuits
中的第二个元素有一个空的“room\u details”。不管怎样,您要将它通过
json\u decode()
并立即传递给foreach

$array_links = json_decode($item->room_details, true); // there was a misplaced opening brace here previously...

if (!is_array($array_links)) {
    continue;
}

foreach ($array_links as $key => $value) {   

在将数组传递给
foreach
之前,需要检查您正在使用的数组

$roomandsuits
中的第二个元素有一个空的“room\u details”。不管怎样,您要将它通过
json\u decode()
并立即传递给foreach

$array_links = json_decode($item->room_details, true); // there was a misplaced opening brace here previously...

if (!is_array($array_links)) {
    continue;
}

foreach ($array_links as $key => $value) {   

您的深层json字符串在结构上是不同的。解码第一个会生成一个包含两个字符串的
img
键控数组。第二个has为null或空字符串(您的帖子没有向我们透露这一点)。最后一个
foreach()
尝试迭代一个不可iterable的数据类型——这就是问题的原因


我可能建议进行重构,以避免太多的
foreach()
结构

将输入数组强制转换为数组后,可以使用
array\u column()
隔离
room\u details

重要的是,您不仅要检查子阵列是否为空,还要检查它是否实际包含
img
键。如果是,我的脚本将假定它是一个索引数组

然后迭代json字符串的集合,解码它们,然后解压缩(使用splat操作符
)并将它们放入结果数组中

构建完结果数组后,使用

内爆元素

代码:()


使用
array\u column()。这避免了在尝试解码之前检查
room\u details
isset()

您的深json字符串在结构上是不同的。解码第一个会生成一个包含两个字符串的
img
键控数组。第二个has为null或空字符串(您的帖子没有向我们透露这一点)。最后一个
foreach()
尝试迭代一个不可iterable的数据类型——这就是问题的原因


我可能建议进行重构,以避免太多的
foreach()
结构

将输入数组强制转换为数组后,可以使用
array\u column()
隔离
room\u details

重要的是,您不仅要检查子阵列是否为空,还要检查它是否实际包含
img
键。如果是,我的脚本将假定它是一个索引数组

然后迭代json字符串的集合,解码它们,然后解压缩(使用splat操作符
)并将它们放入结果数组中

构建完结果数组后,使用

内爆元素

代码:()


使用
array\u column()。这避免了在尝试解码之前检查
房间详细信息
isset()

尝试以下代码。我在评论中添加了细节

foreach ($roomandsuits as $i => $item) { 

        if($item->room_details){  //check if value of $item->'room_details' not null

            $room_details = json_decode($item->room_details, true); //decode the json data

            if(!empty($room_details)){  //Check if room_details is not empty array
                $room = $room_details['img'];
                array_walk($room, function($value){  //using array_walk gate the value of room_details
                    echo $value .'<br/>';
                });

            }
        }

    }
foreach($roomandsuits as$i=>$item){
如果($item->room\u details){//检查$item->“room\u details”的值是否不为空
$room\u details=json\u decode($item->room\u details,true);//解码json数据
如果(!empty($room\u details)){//检查room\u details是否不是空数组
$room=$room_详细信息['img'];
array\u walk($room,function($value){//使用array\u walk gate获取room\u细节的值
回显$value.“
”; }); } } }

请尝试下面的代码。我在评论中添加了细节

foreach ($roomandsuits as $i => $item) { 

        if($item->room_details){  //check if value of $item->'room_details' not null

            $room_details = json_decode($item->room_details, true); //decode the json data

            if(!empty($room_details)){  //Check if room_details is not empty array
                $room = $room_details['img'];
                array_walk($room, function($value){  //using array_walk gate the value of room_details
                    echo $value .'<br/>';
                });

            }
        }

    }
foreach($roomandsuits as$i=>$item){
如果($item->room\u details){//检查$item->“room\u details”的值是否不为空
$r