首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么能得到这个输出?

我怎么能得到这个输出?
EN

Stack Overflow用户
提问于 2017-03-20 05:34:17
回答 1查看 57关注 0票数 2

我是打印一个网站使用PHP的DNS记录。但是我的输出和我得到的不一样。下面是我得到的代码和输出:

代码语言:javascript
复制
    <?php
$domain = "php.net";
$result = dns_get_record($domain,DNS_ANY);
echo '<pre>';
echo json_encode(array('domain'=>$domain,'data'=>$result), JSON_PRETTY_PRINT);
?>

产出:

代码语言:javascript
复制
{
    "domain": "php.net",
    "data": [
        {
            "host": "php.net",
            "class": "IN",
            "ttl": 300,
            "type": "AAAA",
            "ipv6": "2a02:cb41::7"
        },
        {
            "host": "php.net",
            "class": "IN",
            "ttl": 300,
            "type": "TXT",
            "txt": "v=spf1 ip4:72.52.91.12 ip6:2a02:cb41::8 ip4:140.211.15.143 ?all",
            "entries": [
                "v=spf1 ip4:72.52.91.12 ip6:2a02:cb41::8 ip4:140.211.15.143 ?all"
            ]
        },
        {
            "host": "php.net",
            "class": "IN",
            "ttl": 30,
            "type": "MX",
            "pri": 0,
            "target": "php-smtp2.php.net"
        },
        {
            "host": "php.net",
            "class": "IN",
            "ttl": 300,
            "type": "SOA",
            "mname": "ns1.php.net",
            "rname": "admin.easydns.com",
            "serial": 1484930803,
            "refresh": 16384,
            "retry": 2048,
            "expire": 1048576,
            "minimum-ttl": 2560
        },
        {
            "host": "php.net",
            "class": "IN",
            "ttl": 185,
            "type": "A",
            "ip": "72.52.91.14"
        },
        {
            "host": "php.net",
            "class": "IN",
            "ttl": 300,
            "type": "NS",
            "target": "dns3.easydns.org"
        },
        {
            "host": "php.net",
            "class": "IN",
            "ttl": 300,
            "type": "NS",
            "target": "dns2.easydns.net"
        },
        {
            "host": "php.net",
            "class": "IN",
            "ttl": 300,
            "type": "NS",
            "target": "dns1.easydns.com"
        },
        {
            "host": "php.net",
            "class": "IN",
            "ttl": 300,
            "type": "NS",
            "target": "dns4.easydns.info"
        }
    ]
}

我期望产出如下:

代码语言:javascript
复制
{
  "domain": "php.net",
  "data": [
    {
      "AAAA": [
        {
          "host": "php.net",
          "class": "IN",
          "ttl": 300,
          "ipv6": "2a02:cb41::7"
        }
      ]
    },
    {
      "TXT": [
        {
          "host": "php.net",
          "class": "IN",
          "ttl": 300,
          "txt": "v=spf1 ip4:72.52.91.12 ip6:2a02:cb41::8 ip4:140.211.15.143 ?all",
          "entries": [
            "v=spf1 ip4:72.52.91.12 ip6:2a02:cb41::8 ip4:140.211.15.143 ?all"
          ]
        }
      ]
    },
    {
      "MX": [
        {
          "host": "php.net",
          "class": "IN",
          "ttl": 30,
          "pri": 0,
          "target": "php-smtp2.php.net"
        }
      ]
    },
    {
      "SOA": [
        {
          "host": "php.net",
          "class": "IN",
          "ttl": 300,
          "mname": "ns1.php.net",
          "rname": "admin.easydns.com",
          "serial": 1484930803,
          "refresh": 16384,
          "retry": 2048,
          "expire": 1048576,
          "minimum-ttl": 2560
        }
      ]
    },
    {
      "A": [
        {
          "host": "php.net",
          "class": "IN",
          "ttl": 185,
          "ip": "72.52.91.14"
        }
      ]
    },
    {
      "NS": [
        {
          "host": "php.net",
          "class": "IN",
          "ttl": 300,
          "target": "dns3.easydns.org"
        }
      ]
    },
    {
      "NS": [
        {
          "host": "php.net",
          "class": "IN",
          "ttl": 300,
          "target": "dns3.easydns.org"
        }
      ]
    },
    {
      "NS": [
        {
          "host": "php.net",
          "class": "IN",
          "ttl": 300,
          "target": "dns3.easydns.org"
        }
      ]
    },
    {
      "NS": [
        {
          "host": "php.net",
          "class": "IN",
          "ttl": 300,
          "target": "dns3.easydns.org"
        }
      ]
    }
  ]
}  

甚至我都想知道为什么DNS_ANY能工作,而不是DNS_ALL?还有如何避免输出中的重复条目,因为可以看到与type: NS关联的记录是重复输出。

请帮我回答这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-20 05:45:42

代码语言:javascript
复制
<?php
$domain = "php.net";
$result = dns_get_record($domain,DNS_ANY);
$data = [];
foreach ($result as $item) {
    $type = $item['type'];
    unset($item['type']);
    $data[] = [$type => [$item]];
}

echo '<pre>';
echo json_encode(array('domain'=>$domain,'data'=>$data), JSON_PRETTY_PRINT);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42896474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档