2012-11-12 18 views
0

目前,我有下面的代碼,但由於某種原因,它只能輸出一個項目的foreach沒有表現出一個以上的變量

基本上我試圖做的是說的foreach mainPropertyUrl創建的列表的foreach上市,但由於某種原因我只找回一個ListingId

主要飼料所在地 - http://api.trademe.co.nz/v1/Member/4389666/Listings/All.xml

PHP:

$mainXmlUrl = simplexml_load_file("http://api.trademe.co.nz/v1/Member/4389666/Listings/All.xml"); 

$listing = $mainXmlUrl->List->Listing; 

$mainPropertyUrl = simplexml_load_file("http://api.trademe.co.nz/v1/Listings/$listing->ListingId.xml"); 

在我的HTML我試圖做一個普通foreach循環,但不使用$url變量作爲我不確定我會如何與一個上市工作的代碼來實現它。

我也試圖打造上市ID數組,但它不顯示數據:

$ListingArray = array(); 

      foreach ($listing[0] as $id) { 

       $IDNum = $id->ListingId; 

       $ListingArray[] = $IDNum; 
      } 

      var_dump($ListingArray); 

HTML SNIPPIT:

<?php foreach ($mainPropertyUrl as $url): ?> 

<div class="listingContainer"> 
<h2><?php echo $tradeMePropertyAddressFull;?></h2> 
<div class="listingAttributes"> 
<div class="col0"> 
<span class="name"><?php echo $mainPropertyDetails[0]->Attribute[0]->DisplayName;?>:</span> 
<span class="value"><?php echo $tradeMePropertyBathrooms[0];?></span> 
+0

http://pinterest.com/pin/343118065329946155/ – markus

回答

0

嘗試:

$mainPropertyUrl = simplexml_load_file("http://api.trademe.co.nz/v1/Listings/{$listing->ListingId}.xml"); 

你需要把{}各地對象訪問信達X。

UPDATE:

$listing是一個數組,所以你的循環應該是:

foreach($listing as $l) { 
    $ListingArray[] = "$l->ListingId"; 
} 
+0

當有上市沒有其他它好工作爲一個上市的背後有一個原因{} –

+0

這並不工作 –

+0

我以前從來沒有見過它錯了,我想,當你調用一個方法,而不是訪問屬性時,才需要括號。 – Barmar

0

你$ mainXmlUrl包含幾項商家在一份簡短的格式的明細表。對於每一個這些房源,您將需要調用$ mainPropertyUrl用新ListingId獲得細節對於具體的上市。

您可以通過$ mainXmlUrl->列表 - >上市循環,並在每個這些節點,你就能檢索ListingId作爲屬性。

$mainXmlUrl = simplexml_load_file("http://api.trademe.co.nz/v1/Member/4389666/Listings/All.xml"); 

$listingIds = array(); 

foreach ($mainXmlUrl->List->Listing as $listing) { 
    // $listing->ListingId is actually an XML object that has a __toString method. 
    // Hence the type casting below. 
    $listingIds[] = (string) $listing->ListingId; 
} 

print_r($listingIds); 

要檢索有關每個房源的詳細信息,您將需要調用mainPropertyUrl每個上市ID。

$mainXmlUrl = simplexml_load_file("http://api.trademe.co.nz/v1/Member/4389666/Listings/All.xml"); 

foreach ($mainXmlUrl->List->Listing as $listing) { 
    $mainPropertyUrl = simplexml_load_file("http://api.trademe.co.nz/v1/Listings/{$listing->ListingId}.xml"); 

    // $mainPropertyUrl is an XML object containing the detailed information on one listing 
    print_r($mainPropertyUrl); 
} 

這將導致在一個單獨的API調用每個屬性,所以看出來的API速率限制,如果限制TradeMe上面你可以在一定時期內使請求的數量。

可能有一重擊檢索多個房源的詳細信息的方式,這將是遠遠超過擊中API一次的產品列表中,然後再在該結果每房源更有效。您需要查閱他們的文檔,因爲我不熟悉此API。

$mainXmlUrl = simplexml_load_file("http://api.trademe.co.nz/v1/Member/4389666/Listings/All.xml"); 

foreach ($mainXmlUrl->List->Listing as $listing) { 
    $mainPropertyUrl = simplexml_load_file("http://api.trademe.co.nz/v1/Listings/{$listing->ListingId}.xml"); 

    echo '<div class="listingContainer">'; 
    foreach ($mainPropertyUrl->Attributes->Attribute as $attribute) { 
     echo '<span class="name">'.$attribute->DisplayName.':</span>'; 
     echo '<span class="value">'.$attribute->Value.'</span>'; 
    } 
} 
相關問題