Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP浏览JSON层次结构?_Php_Json - Fatal编程技术网

如何使用PHP浏览JSON层次结构?

如何使用PHP浏览JSON层次结构?,php,json,Php,Json,我正在构建一个解码JSON文件的天气应用程序(可在此处找到:) 我遇到的问题是在PHP代码中导航JSON文件以正确选择温度 我需要做list->1->main->temp,但这在PHP中导致了一个数字错误。如何正确设置导航 echo "<form id='searchform' method='POST' action='https://projekt2-sofiamusick.c9users.io/wordpress/prognos/'> Search: <input typ

我正在构建一个解码JSON文件的天气应用程序(可在此处找到:)

我遇到的问题是在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;
echo”
搜索:
";
如果(isset($_POST['search'])){
$cityz=$_POST['searchquery'];
回声“
”; 回声“; $data=文件\u获取\u内容(“http://api.openweathermap.org/data/2.5/forecast?q=$cityz&appid=77f5e3fbc99649054660f82f871220f4&units=metric”); $jsonObject=json_decode($data,json_NUMERIC_CHECK); json_编码(数组('list'=>(int)$jsonObject)); $list=$jsonObject->list; $number=$jsonObject->'1'; $mains=$jsonObject->main; 回声电源;
如果使用
JSON\u NUMERIC\u CHECK
,则数据将显示为数组。
如果要获取第一个元素,只需使用
$jsonObject['list'][0]


如果没有
JSON\u NUMERIC\u CHECK
,您的数据将以stdClass的形式呈现,您可以通过
$jsonObject->list{0}
获得第一个元素

$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;  
echo';
var_dump($jsonObject);
回声';
死亡
在您将看到对象的地方,意味着您必须使用“->”来访问,在您看到数组的地方,使用数组的键来获取该值


如果有任何其他疑问,请随时询问。

尝试:
list[0]->main->temp
list将是一个数组