JSON显示在屏幕上而不是推送到变量

时间:2017-04-18 20:15:21

标签: php json

我一直试图编写代码来使用API​​从网上商店检索条目。使用此代码

<?php
$ch = curl_init('https://api.mijnwebwinkel.nl/v1/orders?language=nl_NL&limit=10&start_date=2017-04-10&end_date=2017-04-20&format=json&ordering=asc&partner_token=xxx&token=xxx');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

// execute post
$result = curl_exec($ch);

// close connection
curl_close($ch);
?>

我将结果直接打印在屏幕上,我真的不知道为什么会这样,因为没有代码可以执行此操作。

通常我使用$data = json_decode($result);转换json并能够将其用作echo $data->url;之类的变量,但这不起作用。

那么如何防止显示输出以及为什么可以;我转换为变量。

修改

我在评论中提到了RETURNTRANSFER。 当我使用print_r($data);时,我看到一个数组

  

数组([0] =&gt; stdClass对象([数字] =&gt; 3172023 [日期] =&gt;   2017-04-14 [时间] =&gt; 13:46:51 [status] =&gt; 4 [status_changed_date] =&gt;   2017-04-17 [status_changed_time] =&gt; 21:11:47 [重量] =&gt; 150   [完成] =&gt; [taxed] =&gt; include [locale] =&gt; nl_NL [评论] =&gt;   stdClass对象([customer] =&gt;符合afspraak杠杆操作   bovengenoemd adres van 295 -100-60 cm,2 mm dik,met rand binnenzijde   面包车15厘米,cortenstaal plantenbak,zonder bodem。 )[付款] =&gt; stdCla

我一直试图用

获得输出
foreach ($data['stdClass Object'] as $object)
{
    echo "items:". $object['number'] ."\n";
};

导致

  

为foreach()提供的参数无效

2 个答案:

答案 0 :(得分:2)

正如我在评论中提到的,cURL默认输出响应。为防止出现这种情况,您应将CURLOPT_RETURNTRANSFER选项设置为true

更进一步 - 输出中的stdClass Object 一个键。它是一个班级的名字。因此,数组的第一个元素是类object的{​​{1}}。

迭代数组是:

stdClass

或者您可以foreach ($data as $object) { // `$object` is a stdClass object // accessing object properties is done with `->` echo "items:". $object->number ."\n"; }; 将第二个参数设置为json_decode时的回复。所有项目都是数组:

true

答案 1 :(得分:-1)

在print_r和var_dump的输出中,&#39; stdClass对象&#39;表示数据类型,而不是变量的名称。

尝试使用此代码

{{1}}