对于任何重复内容,我深表歉意.我搜索和阅读了其他问题,但没有找到任何问题.我有一个来自JSON请求的多维数组,我希望遍历该数组并根据其中一个值按组显示其内容.这是我的JSON:

{
    "response": {
        "error": false,
        "message": "",
        "total_items": 6,
        "items": [
            {
                "id": 1001,
                "server_name": "server001.test.com",
            },
            {
                "id": 1001,
                "server_name": "server002.test.com",
            },
            {
                "id": 1002,
                "server_name": "server001.test.com",
            },
            {
                "id": 1002,
                "server_name": "server002.test.com",
            },
            {
                "id": 1002,
                "server_name": "server003.test.com",
            },
            {
                "id": 1003,
                "server_name": "server001.test.com",
            },
            {
                "id": 1003,
                "server_name": "server002.test.com",
            },
            {
                "id": 1003,
                "server_name": "server003.test.com",
            },
            {
                "id": 1004,
                "server_name": "server004.test.com",
            },
        ]
    }
}

到目前为止,我的 idea 是:

<?php
$json = '{
    "response": {
        "error": false,
        "message": "",
        "total_items": 6,
        "items": [
            {
                "id": 1001,
                "server_name": "server001.test.com"
            },
            {
                "id": 1001,
                "server_name": "server002.test.com"
            },
            {
                "id": 1002,
                "server_name": "server001.test.com"
            },
            {
                "id": 1002,
                "server_name": "server002.test.com"
            },
            {
                "id": 1002,
                "server_name": "server003.test.com"
            },
            {
                "id": 1003,
                "server_name": "server001.test.com"
            },
            {
                "id": 1003,
                "server_name": "server002.test.com"
            },
            {
                "id": 1003,
                "server_name": "server003.test.com"
            },
            {
                "id": 1004,
                "server_name": "server004.test.com"
            }
        ]
    }
}';

$array = json_decode($json, true);

if ($array) {
    $items = $array['response']['items'];
}

foreach ($array as $item) {

    foreach ($items as $key) {
        $id = $items[0]['id'];
        $server_name = $items[0]['server_name'];
        echo "| $id | $server_name | <br/>";
    }

}

?>

我的输出是:

| 1001 | server001.test.com |
| 1001 | server001.test.com |
| 1001 | server001.test.com |
| 1001 | server001.test.com |
| 1001 | server001.test.com |
| 1001 | server001.test.com |
| 1001 | server001.test.com |
| 1001 | server001.test.com |
| 1001 | server001.test.com |

但我预计会是这样的:

| 1001 | server001.test.com |
|      | server002.test.com |
| 1002 | server001.test.com |
|      | server002.test.com |
|      | server003.test.com |
| 1003 | server001.test.com |
|      | server002.test.com |
|      | server003.test.com |
| 1004 | server004.test.com |

感谢您的真知灼见和建议!

推荐答案

跟踪当前ID,并仅在更改时打印它.

$json = '...'; // Your JSON data

$array = json_decode($json, true);

if ($array) {
    $items = $array['response']['items'];
}

$currentId = null;
foreach ($items as $item) {
    $id = $item['id'];
    $server_name = $item['server_name'];

    // Only print the ID if it's different from the current ID
    if ($id !== $currentId) {
        echo "| $id | $server_name | <br/>";
        $currentId = $id;
    } else {
        echo "|     | $server_name | <br/>";
    }
}

Php相关问答推荐

当我们使用PHPUnit时,控制台中的--uses param到底起了什么作用以及如何使用?

在WooCommerce产品档案页面中显示产品销售百分比

如何在Woocommerce中禁用机器人添加到推车?

在不超过PHP时间限制的情况下,在Laravel中高效地插入批量数据(25万条记录)?(队列、多租户)

从WC会话变量更改WooCommerce checkout 托运方法成本

Chillerlan/php-iOS名称字段的QR vCard错误

如何使用PHP从TXM(XML)标记中读取特定属性

既然setSQLLogger()已被弃用,如何使用中间件在 Doctrine 3 中记录查询执行时间?

如何在 PHP laravel 中将图像的透明背景转换为白色?

向元素添加类时添加循环错误

在 WooCommerce 我的帐户自定义部分显示未购买的产品

添加或删除优惠券后自动刷新 WooCommerce checkout 表单字段

根据页面的最后修订日期设置 MediaWiki 内部链接的样式

在 Botiga 主题模板中添加复选框到政策行.Woocommerce

WooCommerce – 在新订单邮箱通知中显示产品分类计数

Laravel auth()->id() 在生产服务器中不工作

如何修复正则表达式以在换行符后查找非数值

Symfony 迁移判断器在我的工作中失控

如果 static:: 被解析为B,为什么 PHP 会执行A的方法

来自命令行的 PHP 没有给出正确的结果