我最近问了一个关于循环数组的问题,该数组已经回答并使用了这个:
回答标记。
我自己修改过的答案也在下面。
JSON
{"product": [{
"title":"Product One",
"price":"Price One",
"desc":"Description One"
}]
}
PHP
foreach($product['product'] as $value) {
echo "Title : " .$value['title'];
}
我一直在试图弄清楚如何循环第二级(?)数组,例如这个image
数组。
JSON
{"product": [{
"title":"Product One",
"price":"Price One",
"desc":"Description One",
"image": [{
"img":"image 1 1"
},{
"img":"image 1 2"
},{
"img":"image 1 3"
}]
}, {
"title":"Product Two",
"price":"Price Two",
"desc":"Description Two",
"image": [{
"img":"image 2 1"
},{
"img":"image 2 2"
},{
"img":"image 2 3"
}]
}]
}
到目前为止,我已经尝试过这个:
<?php
foreach($product['product']['image'] as $value) {
echo "Image: " .$value['img'] . "<br>";
}
?>
和
<?php
foreach($product['product'] as $value) {
echo "Image: " .$value['image']['img'] . "<br>";
}
?>
以及类似想法的一些变化。
我想要的输出是:
Image: image 1 1
Image: image 1 2
Image: image 1 3
Image: image 2 1
Image: image 2 2
Image: image 2 3
另外,我如何通过值例如..
来选择数组JSON
{"product": [{
"id":"001"
"title":"Product One",
"price":"Price One",
"desc":"Description One"
},{
"id":"002"
"title":"Product One",
"price":"Price One",
"desc":"Description One"
}]
}
PHP
if ( isset( $product['product']['id'] && $product['product']['id'] == "001") ) {
foreach(*specific array as $value) {
echo "Title : " .$value['title'] . "<br>";
echo "Price : " .$value['price'] . "<br>";
}
等。
我在想更好的方法是将数组设置为id,这样我就可以说抓住数组{"product": [{"001": [{"title:..."002": [{...
而不是价值001
的产品用于密钥{{1} }。只是不确定很多事情所以很难找到我的错误。
提前致谢。
答案 0 :(得分:2)
对于第一部分,您可以使用以下内容;
<?php
foreach($product['product'] as $value) {
foreach($value["image"] as $image) {
echo "Image: " .$image['img'] . "<br>";
}
}
?>
以下是一个有效的演示: Demo
对于第二部分,您可以使用以下内容;
function getArrValue($key, &$product) {
foreach ($product["product"] as $product) {
if (!empty($product["id"]) && $product["id"] == $key) {
return $product;
}
}
}
var_dump(getArrValue("001", $product));
您可以在此处查看演示: Demo
答案 1 :(得分:1)
在迭代第二个维度之前,您需要迭代第一个维度:
foreach ($data['product'] as $product) {
//echo "Title : " . $product['title'] . "\n";
foreach ($product['image'] as $image) {
echo "Image: {$image['img']}\n";
}
}
答案 2 :(得分:1)
您可以使用$ key =&gt; $ value获取属性名称
foreach($product['product'] as $key=>$value){
if ($key =="image"){
foreach($value as $img){
echo "Image: ".$img;
}
}
}
答案 3 :(得分:0)
根据 paulitto 答案找出符合我需求的小型解决方案。
PHP
foreach($product['product'] as $key=>$value){
if ($value['id'] =="001") {
echo "Title: " .$value['title']."<br>";
foreach($value['image'] as $img){
echo "Image: " .$img['img']."<br>";
}
}
}
输出
Title: Product One
Image: image 1 1
Image: image 1 2
Image: image 1 3
谢谢大家。