2011-07-07 88 views
1

使用SimpleXML從基本XML文件中提取數據。該XML看起來像:PHP SimpleXML重複數據

<shop> 
    <section> 
    <title></title> 
    <products> 
     <item> 
     ... 
     </item> 
    </products> 
    </section> 
</shop> 

我可以加載和環出節點,但是當我填充HTML,每個部分的項目也不斷重複第一部分項目。我很困惑,因爲每個部分名稱都正確輸出,但使用第一組項目。

foreach($xml->section as $section){ 
$i=0; 
echo '<div class="section"><div class="sectionTop"><h3>'.$section->title.'</h3><a class="expand">+/-</a></div>';   

foreach($xml->section->products as $products){ 
    foreach($products->item as $item){ 
     if($i==3){echo '</div><div class="extra">';}?> 

     <div class="item"> 
     <img src="<?=$item->image?>" /> 
     <div class="prodName"><?=$item->name?></div> 
      <div class="price">&pound;<?=$item->price?></div> 
     <a href="<?=$item->url?>" class="shopNow">SHOP</a> 
    </div> 

     <? 
     $i++; 
     unset($item); 
    } 
    unset($products); 
} 

任何人都可以幫忙嗎?這其中,我到目前爲止,未設置不起作用:(<shop>$xml

+0

在循環中取消設置循環變量是完全沒有必要的如果你真的擔心內存使用掛在那些變量上你不應該這樣做),那麼至少在循環之後將它們取消* – nickf

+0

產品元素是否可以包含多於一個項目元素T' e.g ... ... boug

+0

是,產品中含有多達9個項目,每個項目有自己的節點(名稱,圖片,網址,價格)。 –

回答

0

您應該使用$部分變量來計算它的產品。

所以 的foreach($ XML->中─>產品爲$產品){ - > foreach($ section-> products as $ products){

+0

對不起,我不確定我明白嗎?! –

+0

對不起,我得到它的工作,然後立即意識到這正是你所說的!現在完美地工作,並且比這更好,我明白爲什麼它出錯了 - 所以非常感謝你:) –