2013-11-28 41 views
2

我循環的XML文件來顯示它的內容和結構是:不要顯示在XML文件中重複的記錄

<PRODUCT> 
<ID><![CDATA[100860]]></ID> 
<NAME><![CDATA[Blah blah blah blah]]></NAME> 
<DESCRIPTION><![CDATA[An amazing shoe]]></DESCRIPTION> 
<CATEGORY_NAME><![CDATA[SHOES]]></CATEGORY_NAME> 
<MANUFACTURER><![CDATA[Club]]></MANUFACTURER> 
<PREVIOUS_PRICE_WITH_VAT><![CDATA[38.40]]></PREVIOUS_PRICE_WITH_VAT> 
<PRICE_WITH_VAT><![CDATA[19.90]]></PRICE_WITH_VAT> 
<PRODUCT_URL><![CDATA[http://www.domain.com]]></PRODUCT_URL> 
<IMAGE_URL><![CDATA[http://www.domain.com/100_a.jpg]]></IMAGE_URL> 
<THUMBNAIL_URL><![CDATA[]]></THUMBNAIL_URL> 
</PRODUCT> 

到目前爲止,我使用的代碼波紋管相互呼應

<?php 
// specify url of xml file 
$urln = "xml_feeds.xml"; 
// get xml file contents 
$xmln = simplexml_load_file($urln); 

echo '<div style="width: 1000px; padding:10px; margin-bottom:10px; border:1px solid #000;">'; 
foreach($xmln->PRODUCT as $PRODUCTS) 
{ 

echo '<p style="background-color: #069; color: #fff;">'; 
echo "["; 
echo $PRODUCTS->CATEGORY_NAME; 
echo "]"; 
echo "</p>"; 

} 
echo '<div style="clear:both;"></div></div>'; 
?> 

該守則目前運作良好,但如何不顯示重複記錄。我的意思是不要告訴我相同的CATEGORY_NAME(類別名稱)

謝謝!

+0

存儲第一類名稱在一些變量,並比較下一記錄的類別名稱。如果匹配不顯示,則顯示並用新類別更新變量的值 – Satya

回答

1

創建一個數組包含類別名稱,使用array_unique()以除去重複,然後循環通過新的數組回聲出元素:

$category_name_array = array(); 

foreach($xmln->PRODUCT as $products) 
{ 
    $category_name_array[] = (string) $products->CATEGORY_NAME 
} 

$category_name_array = array_unique($category_name_array); 

foreach ($category_name_array as $category_name) { 
    echo '<p style="background-color: #069; color: #fff;">'; 
    echo "[$category_name]"; 
    echo "</p>"; 
}