为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
翻过高山走不出你 2021-05-05 21:53:48
我正在尝试使用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.99Bazoo Care 冬季理想之选 32.99我将其添加为外部嵌套循环:foreach ($data as $products => $value) {echo $products;}但这仅返回第一个对象名称。如何实现以上目标?这是JSON的可视化。
查看完整描述

2 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

您已经快到了,您只需要在第一个循环中输出键名,因此

foreach ($data as $products) {

是在项目Specials等上循环的位。因此,首先抓住中的键,然后将foreach()其作为循环中的第一件事输出...

foreach ($data as $key => $products) {
    echo $key."<br>";

(不})会给...

Specials<br>Shirt<br>cot...


查看完整回答
反对 回复 2021-05-07
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

将您转换json为数组并遍历它


 $data = json_decode($readjson, true);

在这里,我们传递true参数,这意味着没有对象的数组。


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

  foreach($value as $k => $v){

     echo '<b>'.$v['name'].'</b> '.' '.$v['dsc'];

     echo isset($v['price']) ? $v['price'] : ' ';

     if(array_key_exists('vari', $v)){

        $vari = array_column($v['vari'], 'price','name');

        foreach($vari as $_k => $_v){

            echo $_k.' '.$_v;

        }

     }

     echo '<hr>';

  }

}

结果:-


Shirt cotton shirt red 25.8green 26.5

shorts one size15.99

shoes black shoes capri 37.8shooters 28.5

Glax Red thin lightweight22.99

Bazoo Care ideal for winter32.99


查看完整回答
反对 回复 2021-05-07
  • 2 回答
  • 0 关注
  • 206 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信