【问题标题】:Getting JSON data from Rest API [closed]从 Rest API 获取 JSON 数据 [关闭]
【发布时间】:2019-02-23 15:00:49
【问题描述】:

我正在使用 Rest API 从网站获取数据,我想在我的网上商店中使用该数据。我以前从未使用过 API。

我现在有以下代码:

<?php 

$url = 'https://api.floraathome.nl/v1/products/get?apitoken=[MY_API_TOKEN]&type=json';
$json = file_get_contents($url);
$retVal = json_decode($json, TRUE);

for ($x = 0; $x < count($retVal); $x++) {
    echo $retVal['data'][$x]['dutchname']."<br>";
    echo $retVal['data'][$x]['purchaseprice']."<br>";
    echo $retVal['data'][$x]['promotionaltext']."<br><br>";
}

我的问题是它只显示前 2 个产品,但我选择了 9 个产品。如果我打印 $retVal,它会输出所有 9 个产品。

【问题讨论】:

  • 您应该更新您的问题以显示var_dump($retVal) 的样子。您可能还想考虑改用foreach 循环

标签: php json api for-loop


【解决方案1】:

这就是为什么我总是喜欢foreach(),如下所示:-

foreach($retVal['data'] as $retV){
    echo $retV['dutchname']."<br>";
    echo $retV['purchaseprice']."<br>";
    echo $retV['promotionaltext']."<br><br>";
}

注意:-如果您将 count($retVal) 更改为 count($retVal['data']),您的代码也将起作用

【讨论】:

    【解决方案2】:

    我的问题是它只显示前 2 个产品,但我有 9 个 选择的产品。如果我打印 $retVal,它会输出所有 9 个产品。

    那是因为你循环的元素计数错误:

    for ($x = 0; $x < count($retVal); $x++)
                      ^^^^^^^^^^^^^^
    

    如您所见,问题出在count($retVal),我认为结构是这样的:

    Array (
        [data] => Array ()
        [xxxx] => 'xx'
    )
    

    所以要解决这个问题,-如果您想使用for 循环而不是使用foreach 的其他正确解决方案-您将需要获取探测器计数count($retVal['data'])

    for ($x = 0; $x < count($retVal['data']); $x++) {
        echo $retVal[$x]['dutchname']."<br>";
        echo $retVal[$x]['purchaseprice']."<br>";
        echo $retVal[$x]['promotionaltext']."<br><br>";
    }
    

    【讨论】:

      猜你喜欢
      • 2019-06-15
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      相关资源
      最近更新 更多