如何在事先不知道密钥的情况下在 PHP 中读取 JSON 数据

问题描述 投票:0回答:1

我在 PHP 中有以下 JSON 响应

{
    "tlds": {
        ".art": {
            "register": "16.99",
            "transfer": "16.99",
            "renew": "16.99",
            "transfer_requires_epp_code": true,
            "id_protection_supported": true
        },
        ".icu": {
            "register": "12.99",
            "transfer": "12.99",
            "renew": "12.99",
            "transfer_requires_epp_code": true,
            "id_protection_supported": true
        },
        ".xyz": {
            "register": "2.99",
            "transfer": "13.99",
            "renew": "13.99",
            "transfer_requires_epp_code": true,
            "id_protection_supported": true
        },
        ".cyou": {
            "register": "12.99",
            "transfer": "12.99",
            "renew": "12.99",
            "transfer_requires_epp_code": true,
            "id_protection_supported": true
        },
        ".fr": {
            "register": "12.99",
            "transfer": "12.99",
            "renew": "12.99",
            "transfer_requires_epp_code": true,
            "id_protection_supported": false
        },
        ".be": {
            "register": "7.99",
            "transfer": "7.99",
            "renew": "12.99",
            "transfer_requires_epp_code": false,
            "id_protection_supported": false
        },
        ".ca": {
            "register": "8.99",
            "transfer": "8.99",
            "renew": "9.99",
            "transfer_requires_epp_code": true,
            "id_protection_supported": false
        },
        ".ch": {
            "register": "8.99",
            "transfer": null,
            "renew": "13.99",
            "transfer_requires_epp_code": true,
            "id_protection_supported": true
        }
    },
    "currency_code": "USD",
    "message": "Successfully retrieved prices",
    "fgt_id": "xxxxxxxxxxxxxxxxx"
}

下面的代码在 php 中回显结果

$response = curl_exec($curl);
$decoded_json = json_decode($response, true);
echo "<table><tr><td>Extension</td><td>Register</td><td>Transfer</td><td>Renew</td></tr>";
foreach ($decoded_json['tlds'] as $key => $value) {
    echo "<tr><td>".$decoded_json['tlds']."</td><td>".$value['register']."</td><td>".$value['transfer']."</td><td>".$value['renew']."</td><tr>";
}
echo "</table>";

但这行不通。它破坏了页面。我只提到了 8 个域名后缀,但实际响应中还有更多。这意味着我们必须将域名扩展视为未知键。考虑到 tlds 有很多行且第一个键未知,如何回显响应数据?

php json
1个回答
0
投票

echo
语句中,更改

.$decoded_json['tlds'].

.$key.

这将在表格的第一列中显示 TLD。

© www.soinside.com 2019 - 2024. All rights reserved.