我有以下json数据数组。当我尝试使用for循环时,php给了我错误"类stdClass的对象无法转换为字符串"。我想访问authns数组中的名称服务器和soa数组。我该怎么做呢?
stdClass Object (
[error] =>
[domain] => whoisdoma.net
[ip_address] => 108.162.199.120
[authns] => stdClass Object (
[nameserver] => uma.ns.cloudflare.com
[ip] => 173.245.58.146
[location] => San Francisco
)
[soa] => stdClass Object (
[nameserver] => tom.ns.cloudflare.com
[email] => dns.cloudflare.com
[serial] => 2015505396
[refresh] => 10000
[retry] => 2400
[expiry] => 604800
[minimum] => 3600
)
)
这是我用来获取数据的代码:
<?php
$domain = $_GET['domain'];
//set the url
$url = "http://api.site.ga/v1/dns/lookup?domain=".$domain;
//start a curl session
$ch = curl_init();
$timeout = 5;
//set curl options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//get the data
$data = curl_exec($ch);
//decode the data
$jsonData = json_decode($data);
//close the curl session
curl_close($ch);
?>
这是我使用
的每个循环<?php
foreach($jsonData->authns as $authns)
{
echo $authns->nameserver;
}
?>
答案 0 :(得分:2)
您需要使用关联数组解码json对象。
这是一个例子:
$data = json_decode(file_get_contents('http://api.domain.com/call'), true);
$ data现在是一个关联数组。
答案 1 :(得分:2)
当它是一个对象时,你正在遍历authns
。因此,您想要的nameserver
在第一次迭代中实际上是$authns
。
只需像$jsonData->authns->nameserver
亲自试试
foreach($jsonData->authns as $authns)
{
echo $authns;
}