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