у меня иногда появляется следующая ошибка Неустранимая ошибка: невозможно использовать объект типа 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 в качестве второго параметра.
boolean
true
$data = json_decode( file_get_contents( "http://feeds.delicious.com/v2/json/urlinfo/data?url=$domain_name" ), true );
Перед использованием $ data в качестве массива:
$data = (array) $data;
А затем просто получите значение total_posts из массива.
$data[0]['total_posts']
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; } }
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);
json_decode возвращает экземпляр stdClass, к которому вы не можете получить доступ, как если бы вы обращались к массиву.json_decode имеет возможность вернуть массив, передав true в качестве второго параметра.
json_decode