【问题标题】:How to navigate the JSON hierarchy with PHP?如何使用 PHP 导航 JSON 层次结构?
【发布时间】:2017-06-04 10:10:28
【问题描述】:

我正在构建一个解码 JSON 文件的天气应用程序(在此处找到:http://api.openweathermap.org/data/2.5/forecast?q=Helsinki&appid=77f5e3fbc99649054660f82f871220f4&units=metric

我遇到的问题是在我的 PHP 代码中导航 JSON 文件以正确选择温度。

我需要做list->1->main->temp 但这会在 PHP 中产生一个数字错误。如何正确设置导航?

echo "<form id='searchform' method='POST' action='https://projekt2-sofiamusick.c9users.io/wordpress/prognos/'>
Search: <input type='text' name='searchquery' placeholder='Search the forum' />
<input class='sendbutton_search' type='submit' name='search' value='>>' />
</form>";

if (isset($_POST['search'])){

$cityz = $_POST['searchquery'];
echo "<br>";
echo "<div id=apithing>";
$data = file_get_contents("http://api.openweathermap.org/data/2.5/forecast?q=$cityz&appid=77f5e3fbc99649054660f82f871220f4&units=metric");
$jsonObject = json_decode($data, JSON_NUMERIC_CHECK);
json_encode( array( 'list' => (int)$jsonObject ) );
$list = $jsonObject->list;
$number = $jsonObject->'1';
$mains = $jsonObject->main;
echo $mains;

【问题讨论】:

  • 尝试:list[0]-&gt;main-&gt;temp 列表将是一个数组

标签: php json


【解决方案1】:

如果您使用JSON_NUMERIC_CHECK,您的数据将显示为数组。
如果你想获得第一个元素,只需使用$jsonObject['list'][0]

如果没有JSON_NUMERIC_CHECK,您的数据会以stdClass 的形式出现,并且您可以使用$jsonObject-&gt;list{0} 获得第一个元素

【讨论】:

    【解决方案2】:

    你可以这样实现

    $data = file_get_contents("http://api.openweathermap.org/data/2.5/forecast?q=Helsinki&appid=77f5e3fbc99649054660f82f871220f4&units=metric");
    $jsonObject = json_decode($data);
    if($jsonObject->cod == '200' && count($jsonObject->list) > 0){
      foreach ($jsonObject->list as $jlk => $jlv) {
        $dt = $jlv->dt;
        $main = $jlv->main;
        // your rest of logic
      }
    }
    

    如果您愿意,您可以像这样查看您的数据:

      echo '<pre>';
      var_dump($jsonObject);
      echo '</pre>';
      die;  
    

    你会看到对象的地方,意味着你必须使用“->”来访问,你看到数组的地方使用数组的键来获取该值。

    如有其他疑问,请随时提问。

    【讨论】:

      猜你喜欢
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多