PHP json解码产品Feed

时间:2014-10-19 21:13:16

标签: php json

我正在尝试解码json feed,但是我遇到了阵列问题。以下是我到目前为止的情况:

<?php
$json_url = "http://pf.tradetracker.net/?aid=190906&encoding=utf-8&type=json&fid=541038&limit=10&categoryType=2&additionalType=2";
$json = file_get_contents($json_url);
$products = json_decode($json);

echo '<ul id="des_list">';
foreach ($products as $name => $value) {
    echo '<li class="des_box">';
    echo $products->object->name;
    echo '</li>';
}
echo '</ul>';

echo "<pre>";
var_dump($products);
echo "</pre>";
?>

我似乎无法在我的foreach声明中生成任何输出,我在这里缺少什么?

以下是数据转储的一些输出:

object(stdClass)#1 (1) {
  ["products"]=>
  array(10) {
    [0]=>
    object(stdClass)#2 (9) {
      ["ID"]=>
      string(5) "32671"
      ["name"]=>
      string(22) "All-inclusive i Alanya"
      ["price"]=>
      object(stdClass)#3 (2) {
        ["currency"]=>
        string(3) "DKK"
        ["amount"]=>
        int(2619)
      }
      ["URL"]=>
      string(179) "http://tc.tradetracker.net/?c=14980&m=541038&a=190906&u=http%3A%2F%2Ftravelbird.dk%2F32671%2Fkahya-hotel-alanya%2F%3Fref%3DTradeTracker%26utm_medium%3Dcpl%26utm_source%3Dt_tracker"
      ["images"]=>
      array(1) {
        [0]=>
        string(86) "http://d3skywhnyagvhv.cloudfront.net/thumbs/70/83/7083078c230c92177b1ff0fd9f57d7cf.jpg"
      }
      ["description"]=>
      string(129) "1 uge i Alanya med all-inclusive, fly tur-retur fra København inkl. indchecket bagage og transport mellem lufthavnen og hotellet"
      ["categories"]=>
      array(0) {
      }
      ["properties"]=>
      object(stdClass)#4 (10) {
        ["country"]=>
        array(1) {
          [0]=>
          string(7) "Tyrkiet"
        }
        ["city"]=>
        array(1) {
          [0]=>
          string(6) "Alanya"
        }
        ["region"]=>
        array(1) {
          [0]=>
          string(7) "Antalya"
        }
        ["accommodationType"]=>
        array(1) {
          [0]=>
          string(5) "hotel"
        }
        ["address"]=>
        array(1) {
          [0]=>
          string(52) "Saray Mh., 913. Sokak, 07400 Alanya/Antalya, Tyrkiet"
        }
        ["fromPrice"]=>
        array(1) {
          [0]=>
          string(7) "4299.00"
        }
        ["descriptionLong"]=>
        array(1) {
          [0]=>
          string(327) "Trætte af regn og slud? Så pak kufferten og forkæl krop og sjæl i Tyrkiets dejligste middelhavsby! Med dette ophold får I 8 dage i Alanya med fuld forplejning, fly tur-retur fra København, indchecket bagage og transport mellem lufthavnen og hotellet. I bor på et hyggeligt hotel med swimmingpool, boblebad og meget mere."
        }
        ["transportType"]=>
        array(1) {
          [0]=>
          string(6) "flight"
        }
        ["duration"]=>
        array(1) {
          [0]=>
          string(1) "8"
        }
        ["subcategories"]=>
        array(1) {
          [0]=>
          string(12) "sun holidays"
        }
      }
      ["variations"]=>
      array(0) {
      }
    }

2 个答案:

答案 0 :(得分:0)

$products不包含产品,它包含整个响应对象。试试这个:

$data = json_decode($json);
$products = $data->products;

echo '<ul id="des_list">';
foreach ($products as $product) {
  echo 
    '<li class="des_box">',
    htmlspecialchars($product->name),
   '</li>';
}
echo '</ul>';

答案 1 :(得分:0)

object(stdClass)#1 (1) {
  ["products"]=>
  array(10) {

因此$products是具有["products"]属性的对象。这可以通过$products->products

解决

$products->products是一个数组,所以试试这个

foreach ($products->products as $value) {
    echo '<li class="des_box">';
    echo $value->name;
    echo '</li>';
}