2016-04-18 3 views
1

Получаю ошибку Notice: Trying to get property of non-object in /home/u852405559/public_html/index.php on line 178 после того как я войду на мой веб-сайт с Steam.Извещение: Попытка получить свойство non-объекта - json

Line 178 является foreach((array)$json_decoded->response->players as $player) {

Вот строки 168 до 195. Пожалуйста, помогите мне

} elseif($openid->mode == 'cancel') { 
    echo 'User canceled auth'; 
} elseif($openid->validate()) { 
    $id = $openid->identity; 
    $ptn = "/^http:\/\/steamcommunity\.com\/openid\/id\/(7[0-9]{15,25}+)$/"; 
    preg_match($ptn, $id, $matches); 
    $steamid = $matches[1]; 
    $url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=$_STEAMAPI&steamids=$steamid"; 
    $json_object = file_get_contents($url); 
    $json_decoded = json_decode($json_object); 
    foreach((array)$json_decoded->response->players as $player) { 
     $url = "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=$_STEAMAPI&steamid=$steamid&format=json"; 
     $json_object2 = file_get_contents($url); 
     $gamesOwned = json_decode($json_object2); 
     $ownsCSGO = 0; 
     foreach($gamesOwned->response->games as $game) { 
      if($game->appid == 730) { 
       $ownsCSGO = 1; 
       break; 
      } 
     } 
     if($ownsCSGO == 0) { 
      echo "<script> $(document).ready(function() { Materialize.toast('This steam account does not have CS:GO'); }); </script>"; 
     } else { 
+1

Предлагает json_decode не увенчался успехом. Попробуйте 'var_dump ($ json_decoded);' и см. – rjdown

+0

@rjdown. Проверьте тип значений var_dump, предположив, что тип объекта является массивом – AndreL

+0

var_dump возвращает с NULL –

ответ

0

Потому что ваши получить содержимое файла возвращает NULL это означает, что параметр php.ini для этого выключен, и вам нужно чтобы включить его увидеть php file_get_contents returns null when allow_url_fopen is on

Вместо того

$json_object = get_file_contents($url); 

Вы также можете использовать

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$json_object= curl_exec($ch); 
curl_close($ch); 

Тогда

$json_decoded = json_decode($json_object); 

в

$json_decoded = json_decode($json_object, true); 

затем использовать RecursiveIteratorClass преобразовать многомерные JSon массив проще разобрать ассоциативный массив

$assocArray= new RecursiveIteratorIterator(
    new RecursiveArrayIterator($json_decoded), 
    RecursiveIteratorIterator::SELF_FIRST); 

finally:

foreach ($assocArray as $key => $val) { 
    if(is_array($val)) { 
     echo "$key:\n"; 
    } else { 
     echo "$key => $val\n"; 
    } 
} 
+0

Он по-прежнему возвращается с ошибками 'Примечание: попытка получить свойство не-объекта в /xxxxx/public_html/index.php в строке 178' и 'Предупреждение: неверный аргумент, предоставленный foreach() в /xxxxxpublic_html/index.php в строке 178' –

+0

, можете ли вы отменить $ json_decoded и опубликовать его здесь? – rojobo

+0

как я его эхо? Что я делаю? Вот полный код 'http: // pastebin.com/CT2XR92V' –

Смежные вопросы