0

現在、次のコードがありますが、何らかの理由で1つのアイテムしか出力されていません

基本的に私がやろうとしたことはmainPropertyUrl、foreachが各リストのリストを作成すると言うことですが、何らかの理由で私は1つしか返されていません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、1つのリストで機能するコードでどのように実装するかわからないため、変数を使用しませんでした。

また、リストIDの配列を作成しようとしましたが、データが表示されません。

$ListingArray = array();

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

                $IDNum = $id->ListingId;

                $ListingArray[] = $IDNum;
            }

            var_dump($ListingArray);

HTMLスニピット:

<?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>
4

2 に答える 2

0

試す:

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

{}オブジェクトアクセス構文を回避する必要があります。

アップデート:

$listingは配列であるため、ループは次のようになります。

foreach($listing as $l) {
    $ListingArray[] = "$l->ListingId";
}
于 2012-11-12T18:49:23.220 に答える
0

$mainXmlUrl には、いくつかのリストの簡単な形式のリストが含まれています。これらのリスティングごとに、新しい ListingId を指定して $mainPropertyUrl を呼び出し、その特定のリスティングの詳細を取得する必要があります。

$mainXmlUrl->List->Listing をループすると、これらの各ノードで 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);

各リスティングの詳細情報を取得するには、各リスティング ID で mainPropertyUrl を呼び出す必要があります。

$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 呼び出しが発生するため、TradeMe が特定の期間に行うことができるリクエストの数を制限している場合は、API レート制限に注意してください。

1 回のヒットで複数のリストの詳細を取得する方法があるかもしれません。これは、製品のリストに対して API を 1 回ヒットし、その結果のすべてのリストに対して再度ヒットするよりもはるかに効率的です。私はこの 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>';
    }
}
于 2012-11-12T20:18:36.297 に答える