如何将数组元素从JSON打印到PHP

时间:2017-07-22 22:50:42

标签: php json

如果您访问网页https://api.mercadolibre.com/items/MLB752465575,您将收到JSON回复。我需要开始的就是在屏幕上打印“id”项目。

这是我的代码:

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
  </head>
  <body>
  <?php

    $json_str = "https://api.mercadolibre.com/items/MLB752465575";

    $obj = json_decode($json_str);

    echo "id: $obj->id<br>"; 

  ?>
  </body>
</html>

我想要的只是在浏览器中收到MLB752465575部分。

我该怎么办?

3 个答案:

答案 0 :(得分:3)

$json_str = "https://api.mercadolibre.com/items/MLB752465575";

以上内容并未检索将URL保存到var的数据,而这并不是您想要的。

您只需要获取内容您可以使用cURL或file_get_contents()

cURL版本:

<?php

$url = "https://api.mercadolibre.com/items/MLB752465575";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$r = curl_exec($curl);
curl_close($curl);
$array = json_decode($r, true);

echo "<pre>";
print_r($array);
echo "</pre>";

?>

file_get_contents版本:

<?php
$r = file_get_contents('https://api.mercadolibre.com/items/MLB752465575');

echo "<pre>";
echo print_r(json_decode($r, true));
echo "</pre>";
?>

除非远程网站要求您成为人类(具有停止机器人请求的额外验证),否则它们都将起作用。如果是这种情况,cURL会更好,因为你可以使用标题数组伪造用户代理。

一旦建立阵列,只需访问所需数据即可。使用$ r作为远程json结构的数组结果。

答案 1 :(得分:1)

使用curl获取结果,使用json_decode将其转换为数组。

<?php
$url = "https://api.mercadolibre.com/items/MLB752465575";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpcode != 200) {
      echo "error " . $httpcode;
      curl_close($ch);
      return -1;
}
$result_arr = json_decode($result, true);
echo $result_arr['id'];
curl_close($ch);

答案 2 :(得分:0)

$jsonResponse = file_get_contents('https://api.mercadolibre.com/items/MLB752465575');
$obj = json_decode($jsonResponse);

echo "id: {$obj->id}<br>";

您在代码中所做的是json_decode网址本身。您需要从URL获取内容,然后解码内容。