2016-01-28 5 views
0

Я пытаюсь извлечь данные из API WoWProgress. Я хочу проанализировать данные в Интернете и просто расшифровать их напрямую, разместив их для просмотра. Я все еще участвую, но у меня, похоже, возникают проблемы с этим массивом. Очень нужна помощь.JSON Parsing issue with PHP

$json = file_get_contents("http://www.wowprogress.com/guild/eu/twisting-nether/hellenic%20horde/json_rank"); 
if($json == false) 
{ 
throw new Exception("Failed To load infomation. Check setup options"); 
} 
$result = json_decode($json, true); 
echo "<pre>"; 
foreach ($result["realm_rank"] as $value) { 
    print_r($value); 
} 
echo "</pre>"; 

Но я получаю это «Недействительный аргумент для Еогеаспа()»

бы действительно любит некоторую помощь. Спасибо заранее!

Извините за мой английский. Английский не мой родной язык.

+0

Похоже, что '$ result [" realm_rank "]' является целым значением, а не массивом. –

+0

var_dump ($ result); –

ответ

1

$result['realm_rank'] является строкой, а не массив.

Поэтому foreach на это вызывает ошибку.

Эта ошибка возникает, когда либо массив не установлен, либо пуст, либо нет массива.

<?php 
$json = file_get_contents("http://www.wowprogress.com/guild/eu/twisting-nether/hellenic%20horde/json_rank"); 
if ($json == false) { 
throw new Exception("Failed To load infomation. Check setup options"); 
} 
$result = json_decode($json, true); 
if (isset($result['realm_rank'])) { 
    if (is_array($result['realm_rank'])) { 
    foreach ($result["realm_rank"] as $value) { 
    echo "<pre>"; 
    print_r($value); 
    echo "</pre>"; 
    } 
    } 
    else { 
    echo $result['realm_rank']; 
    } 
} 
else { 
echo 'Unknown error'; 
} 
?> 
0

$result["realm_rank"] не массив, а значение. Таким образом, вы не можете передать его в foreach.

Вобще:

print_r($result["realm_rank"]); 

Я попробовал это, и его работу:

<?php 

$json = file_get_contents("http://www.wowprogress.com/guild/eu/twisting-nether/hellenic%20horde/json_rank"); 
if($json == false) 
{ 
throw new Exception("Failed To load infomation. Check setup options"); 
} 
$result = json_decode($json, true); 
echo "<pre>"; 
    print_r($result["realm_rank"]); 
echo "</pre>"; 
?> 
+0

, но затем я получу таблицу пустой. –

+0

Вставьте точный код, как указано выше. Работает –

0

Ваш $ результат [ "realm_rank"] не является массивом, но целое. вы не можете перебирать целое число.

Попробуйте просто напечатать его:

print_r($result["realm_rank"]); 
0

Результат $result это

print_r($result); 

Array 
(
    [score] => 750000 
    [world_rank] => 2117 
    [area_rank] => 1031 
    [realm_rank] => 44 
) 

Недействительного аргумент для Еогеаспа() означает, что $result["realm_rank"] не является массив.

Для решения можно использовать значения, как:

foreach($result as $value) { 
    echo $value. "<br/>"; 
} 

Или просто использовать

echo $result["realm_rank"]; 
0

Если вы специально не нужно, чтобы преобразовать его в массив перебрать значения, которые вы могли бы сохранить его в формате объекта по умолчанию, и получить доступ к значениям по имени непосредственно.

define('NL',PHP_EOL);/* only to prettify output */ 

$json = file_get_contents("http://www.wowprogress.com/guild/eu/twisting-nether/hellenic%20horde/json_rank"); 

if(!$json) { 
    throw new Exception("Failed To load infomation. Check setup options"); 
} 

$json = json_decode($json); 

echo '<pre>', 
    $json->score . NL, 
    $json->world_rank . NL, 
    $json->area_rank . NL, 
    $json->realm_rank . NL, 
    '<pre>';