PHP

时间:2016-01-28 10:15:01

标签: php json parsing

我正在尝试从WoWProgress API中提取数据。我想在线解析数据并直接解码它们,同时发布它们以供查看。我还在学习,但我似乎遇到了这个阵列的问题。真的需要一些帮助。

$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>";

但我收到的是“为foreach()提供的无效参数”

真的很喜欢一些帮助。 在此先感谢!

抱歉我的英文。英语不是我的母语。

5 个答案:

答案 0 :(得分: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';
}
?>

答案 1 :(得分: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>";
?>

答案 2 :(得分:0)

您的$ result [&#34; realm_rank&#34;]不是数组,而是整数。你不能迭代一个整数。

尝试简单地打印它:

print_r($result["realm_rank"]);

答案 3 :(得分:0)

$result的结果是

print_r($result);

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

为foreach()提供的参数无效意味着$result["realm_rank"]不是数组。

对于解决方案,您可以将值用作:

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

或者只是使用

echo $result["realm_rank"]; 

答案 4 :(得分: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>';