0
我想用我的XML產品進行排序和php.I想在這樣的方式,頁面上顯示
結果:避免數據重複的XML解析(PHP)
A)首先,代碼可以提取XML數據根據我的Urisegment根據字段(Code)並根據段($ id)爲我提供相關的特定產品。
B)其次,它可以在同一頁面中顯示屬於同一類別的所有產品,而不會再次顯示上述產品。
我的查詢字符串看起來是這樣的: http://myspec.com/productspec/listings/10004/EDEN%2046cmTROUGH
<?
$list = groupBy(file_get_contents('XML/output.xml'), "WhatMoreProductSubRange");
$id=urldecode($this->uri->segment(4)); // URL values for WhatMoreProductSubRange
$id2=urldecode($this->uri->segment(3)); // URL values for Code
foreach ($list[$id] as $product)
{
if ($id2==$product->Code)
{
$subcat=$product->WhatMoreProductSubRange;
?>
<h1><?=$product->Name?> </h1>
<?
}
else {
?>
<h2><?=$product->Name?> </h2>
<?
}
}
?>
<?
function groupBy($xml, $categoryName) {
$xml = new \SimpleXMLElement($xml);
$category = array();
foreach ($xml as $row) {
$attr = $row->attributes();
if (! isset($attr->$categoryName)) {
trigger_error("$categoryName does not exist in XML");
break;
}
$category[(string) $attr->$categoryName][] = $attr;
}
return $category;
}
?>
XML:與Output.xml
<?xml version="1.0" standalone="yes"?>
<Rows>
<Row Code="1002" Name="EDEN TROUGH Terracotta Blue" WhatMoreProductRange="Eden"
WhatMoreProductSubRange="EDEN 46cmTROUGH" WhatMoreWebCategory="Garden Products" />
<Row Code="1003" Name="EDEN TROUGH Terracotta Black" WhatMoreProductRange="Eden"
WhatMoreProductSubRange="EDEN 46cmTROUGH" WhatMoreWebCategory="Garden Products" />
<Row Code="1004" Name="EDEN TROUGH Terracotta Orange" WhatMoreProductRange="Eden"
WhatMoreProductSubRange="EDEN 46cmTROUGH" WhatMoreWebCategory="Garden Products" />
<Row Code="1005" Name="EDEN TROUGH Terracotta blue" WhatMoreProductRange="Eden"
WhatMoreProductSubRange="EDEN 46cmTROUGH" WhatMoreWebCategory="Garden Products" />
</Rows>
此代碼將所有屬於該WhatMoreProductSubRange產品,但我不想產品重複(在A部分中提到)在我的產品列表中(在B部分中提到)。我沒有弄清楚如何避免重複,因爲我是新的xml文件夾仁慈地幫助我。
好吧,它看起來像代碼屬性是唯一的,所以只是測試它,並跳過該行? –
這似乎與XML解析沒有任何關係。只需創建一個數組,以關閉已輸出的產品。處理一行時,檢查它是否已經在數組中;如果它不在數組中,則處理該行並將產品名稱添加到數組中,否則跳過該行。 – Barmar
@Barmar謝謝您的回覆。我嘗試了in_array()函數,但是不能成功。我希望你能解釋一點,因爲我是PHP編程新手。 –