【问题标题】:PHP stdClass Object - foreachPHP stdClass 对象 - foreach
【发布时间】:2021-01-19 15:16:08
【问题描述】:

我正在使用 API 来获取域 DNS 详细信息。打印出来的结果是这样的:

stdClass Object
(
    [test.co.uk] => stdClass Object
        (
            [records] => Array
                (
                    [0] => stdClass Object
                        (
                            [mname] => ns1.test.com.
                            [rname] => hostmaster.test.com.
                            [serial] => 12345678
                            [refresh] => 1800
                            [retry] => 900
                            [expire] => 1209600
                            [minimum-ttl] => 300
                            [ref] => 
                            [host] => test.co.uk
                            [type] => SOA
                        )

                    [1] => stdClass Object
                        (
                            [target] => ns1.test.com
                            [ref] => 
                            [host] => test.co.uk
                            [type] => NS
                        )

                    [2] => stdClass Object
                        (
                            [target] => ns2.test.com
                            [ref] => 
                            [host] => test.co.uk
                            [type] => NS
                        )

如何将每条记录([0]、[1]、[2] 等)转换为变量?我想在表格中显示它们

我尝试了以下方法,但没有显示结果

$Test=$PackageDNSInfo->test.co.uk->records[0]->mname; 
echo $Test;

【问题讨论】:

  • 使用花括号:$PackageDNSInfo->{'test.co.uk'}->records[0]->mname;
  • @Jeto - 谢谢,有没有办法做一个“foreach”来将它们全部显示在一个表格中?
  • 是的,如果您愿意,您可以在 stdClass 对象上foreach(键是属性名称,值是它的值)。
  • @Jeto - 你能提供一个例子作为答案吗?

标签: php arrays api object


【解决方案1】:

只需在其上使用foreach,就像在数组上一样:

foreach ($PackageDNSInfo as $url => $data) {
    foreach ($data->records as $record) {
        $type = $record->type;
        $host = $record->host;
        // etc.
    }
}

如果您想直接访问给定 URL 的数据,请使用花括号:

echo $PackageDNSInfo->{'test.co.uk'}->records[0]->mname;

【讨论】:

  • 谢谢,但我想要每个记录的 foreach,所以我可以在表格中显示它们。类似$Type=$PackageDNSInfo->{"$RelDomIDName"}->records[5]->type; $Host=$PackageDNSInfo->{"$RelDomIDName"}->records[5]->host; $Ref=$PackageDNSInfo->{"$RelDomIDName"}->records[5]->ref; $IP=$PackageDNSInfo->{"$RelDomIDName"}->records[5]->ip;
  • 好的,这样做,当我回显时似乎什么都没有显示......foreach ($PackageDNSInfo as $url => $data) { foreach ($data['records'] as $record) { $type = $record->type; $host = $record->host; echo"$type"; }}
  • 那里有错字($data['records'] 应该是 $data->records),现在应该更好了。
猜你喜欢
  • 2012-11-02
  • 2010-10-31
  • 2011-08-31
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 2014-02-28
  • 2013-05-12
相关资源
最近更新 更多