>我有时会出现以下错误致命错误: 不能将 stdClass 类型的对象用作数组。使用此函数:
function deliciousCount($domain_name)
{
$data = json_decode(
file_get_contents(
"http://feeds.delicious.com/v2/json/urlinfo/data?url=$domain_name"
)
);
if ($data) {
return $data[0]->total_posts;
} else {
return 0;
}
}
$delic = deliciousCount($domain_name);
但此错误有时仅针对特定域发生有什么帮助吗?
根据手册,有一个可选的第二个boolean
参数,它指定是否应将返回的对象转换为关联数组(默认值为 false(。如果您想将其作为数组访问,则只需将true
作为第二个参数传递即可。
$data = json_decode(
file_get_contents(
"http://feeds.delicious.com/v2/json/urlinfo/data?url=$domain_name"
),
true
);
function deliciousCount($domain_name) {
$data = json_decode(
file_get_contents(
"http://feeds.delicious.com/v2/json/urlinfo/data?url=$domain_name"
)
);
// You should double check everything because this delicious function is broken
if (is_array($data) && isset($data[ 0 ]) &&
$data[ 0 ] instanceof stdClass && isset($data[ 0 ]->total_posts)) {
return $data[ 0 ]->total_posts;
} else {
return 0;
}
}
在使用 $data 作为数组之前:
$data = (array) $data;
然后简单地从数组中获取您的total_posts值。
$data[0]['total_posts']
json_decode
返回 stdClass 的一个实例,您不能像访问数组那样访问该实例。 json_decode
确实可以通过传递true
作为第二个参数来返回数组。
function deliciousCount($domain_name)
{
$data = json_decode(
file_get_contents(
"http://feeds.delicious.com/v2/json/urlinfo/data?url=$domain_name"
)
);
if ($data) {
return $data->total_posts;
} else {
return 0;
}
}
$delic = deliciousCount($domain_name);
或
function deliciousCount($domain_name)
{
$data = json_decode(
file_get_contents(
"http://feeds.delicious.com/v2/json/urlinfo/data?url=$domain_name",true
)
);
if ($data) {
return $data['total_posts'];
} else {
return 0;
}
}
$delic = deliciousCount($domain_name);