显示在表中的多个数组的json数据

时间:2018-04-18 00:45:42

标签: php json

我有像这样的json数据

{
    "code": 1,
    "data": [
        {
            "apple": [
                {
                    "id": 127,
                    "type": 1,
                    "color": green,                   
                    "stage": 1,                    
                    "status": 1                   
                },
                {
                    "id": 128,
                    "type": 2,
                    "color": red,                   
                    "stage": 1,                    
                    "status": 1  
                }
            ]
        },
        {
            "oranges": [
                {
                    "id":133
                   "type": 3,
                    "color": rainbow,                   
                    "stage": 1,                    
                    "status": 1   
                },
                {
                   "id":134
                   "type": 3,
                    "color": black,                   
                    "stage": 1,                    
                    "status": 1
                }
            ]
        },
        {
            "berry": [
                {
                    "id":4
                   "type": 2,
                    "color": white,                   
                    "stage": 1,                    
                    "status": 1
                }
            ]
        },
        {
            "watermelon": [
                {
                    "id":5
                   "type": 2,
                    "color": red and blue,                   
                    "stage": 1,                    
                    "status": 1
                }
            ]
        }
    ],
    "bleh": "Succesfully queried database"
}

我想在php中创建一个像这样的东西

Fruit |  Type | color
apple    1     green
apple    2     red
oranges  3     rainbow
oranges  3     black

所以基本上我想要的是当像苹果这样的对象在其中有多个数组时,表格中显示apple及相应的数据。 这就是我到目前为止所拥有的

 $output = json_decode(JsonData);
     $result =$output['data'][0]['apple'];

<table>
    <thead> 
            <tr>                
                <th>Fruits</th> 
                <th>Type</th> 
                <th>color</th>                 
            </tr> 
            </thead> 
            <tbody> 
        <?php if(!isset($result)){ ?>
        <tr> 
            <td>Empty</td> 
            <td>Empty</td> 
            <td>Empty</td> 
            <td>Empty</td>       
        </tr> 
        <?php else{
            foreach($result as $apples){ ?>              
            <tr> 
                <td></td> 
                <td><?php echo "$apples["type"]";?></td> 
                <td><?php echo "$apples["color"]";?></td>                    
            </tr> 
          <?php } ?>
        <?php } ?>
            </tbody> 
        </table>

3 个答案:

答案 0 :(得分:1)

嗯,一眼就看出这是完全错误的语法

<?php echo "apples["type"]";?>

可能你需要这样的东西

<?php echo $apples["type"];?>

你所拥有的内容可能会给你一个语法错误,因为PHP会像这样看到它

<?php echo "apples["   type   "]";    ?>

"apples["是一个完整的字符串,type是一个未定义的常量,它在其所在的位置是意外的,然后是一个额外的字符串"]";

你可以在这个沙箱中测试它

https://3v4l.org/nR8vF

这给了我们这个

Parse error: syntax error, unexpected 'type' (T_STRING), expecting ',' or ';' in /in/nR8vF on line 5

更新

还有一些其他明显的问题,只有这个

$output = json_decode(JsonData);
$result = $output['data'][0]['apple'];

我认为JsonData只是一个占位符,或者您是否错过了$

然后,由于您没有将第二个参数设置为true,因此data将是对象样式。我个人会这样做

 $output = json_decode(JsonData, true);

只需将其用作数组。

其他人已经涵盖了双重“foreach”协议(用于循环水果),所以我不会重新讨论它,我会覆盖它但是它是“晚餐”时间而我的妻子有点“激怒”当我弄乱代码而不是从办公室上来时(我在地下室有办公室)。

答案 1 :(得分:1)

$arr = json_decode($json, true); 
foreach($arr['data'] as $fruit => $types){
 foreach($types as $info){
 echo $fruit;
 echo $info['type']; 
 echo $info['color'];
}
}

这是您将JSON数据导入PHP的方法。我相信你可以创建一个HTML表格来显示这些信息。

答案 2 :(得分:0)

如果您想展示所有水果,那么您将需要以下内容:

$result =$output['data'];

然后更新你的foreach循环

foreach($result as $key=>$fruit){ 
    foreach($fruit as $k=>$dets){?>              
        <tr> 
            <td></td> 
            <td><?php echo $dets["type"];?></td> 
            <td><?php echo $dets["color"];?></td>                    
        </tr> 
<?php } 
} ?>

这也是无效的json