猿问

使用PHP获取JSON属性名称,后跟项目名称值

我正在尝试使用PHP通过JSON进行解析,然后打印出父项属性的名称,后跟各项。


这是JSON


{

"Specials": [{

    "name": "Shirt","dsc":"cotton shirt",

    "vari": [{ "name":"red", "price":25.80 },{ "name":"green", "price":26.50 }]

}, 


{

    "name":"shorts","dsc":"one size","price":15.99

},


{

    "name":"shoes","dsc":"black shoes",

    "vari": [{ "name":"capri", "price":37.80 },{ "name":"shooters", "price":28.50 }]

}],


"Jumpers": [{

    "name": "Glax Red","dsc":"thin lightweight","price":22.99

}, 


{

    "name": "Bazoo Care","dsc":"ideal for winter","price":32.99

}]

}

我用下面的方法来遍历它:


$readjson = file_get_contents('products.json') ;


$data = json_decode($readjson);


foreach ($data as $products) {

foreach ($products as $product) {


echo $product->name."<br>".$product->dsc."<br>";

if (isset($product->price))

    {

echo " ".$product->price."<br>";

}

else {

foreach ($product->vari as $var) {

echo $var->name." ".$var->price."<br/>";

}

}

输出为:


衬衫 棉布衬衫 红色25.8绿色26.5 短裤 一种尺寸 15.99 ...


我想先打印属性的名称,然后显示其中的项目,它看起来应该像这样:


特价商品


衬衫 棉衬衫 红色25.8绿色26.5


短裤 一个规模 15.99 ...


跳线


葛兰素红色 薄轻量级 22.99


Bazoo Care 冬季理想之选 32.99


我将其添加为外部嵌套循环:


foreach ($data as $products => $value) {

echo $products;}

但这仅返回第一个对象名称。如何实现以上目标?


这是JSON的可视化。

翻过高山走不出你
浏览 207回答 2
2回答

一只萌萌小番薯

您已经快到了,您只需要在第一个循环中输出键名,因此foreach&nbsp;($data&nbsp;as&nbsp;$products)&nbsp;{是在项目Specials等上循环的位。因此,首先抓住中的键,然后将foreach()其作为循环中的第一件事输出...foreach&nbsp;($data&nbsp;as&nbsp;$key&nbsp;=>&nbsp;$products)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$key."<br>";(不})会给...Specials<br>Shirt<br>cot...

慕码人8056858

将您转换json为数组并遍历它&nbsp;$data = json_decode($readjson, true);在这里,我们传递true参数,这意味着没有对象的数组。foreach($data as $key => $value){&nbsp; foreach($value as $k => $v){&nbsp; &nbsp; &nbsp;echo '<b>'.$v['name'].'</b> '.' '.$v['dsc'];&nbsp; &nbsp; &nbsp;echo isset($v['price']) ? $v['price'] : ' ';&nbsp; &nbsp; &nbsp;if(array_key_exists('vari', $v)){&nbsp; &nbsp; &nbsp; &nbsp; $vari = array_column($v['vari'], 'price','name');&nbsp; &nbsp; &nbsp; &nbsp; foreach($vari as $_k => $_v){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo $_k.' '.$_v;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp;echo '<hr>';&nbsp; }}结果:-Shirt cotton shirt red 25.8green 26.5shorts one size15.99shoes black shoes capri 37.8shooters 28.5Glax Red thin lightweight22.99Bazoo Care ideal for winter32.99
随时随地看视频慕课网APP
我要回答