2012-11-10 50 views
2

我有以下一段代碼,它會得到以下結果。從一個簡單的XML組結果

$file = 'http://mywebsite.com/test.xml?apikey=*******&API=TEST&limit=30'; 
if(!$xml = simplexml_load_file($file)) 
    exit('Failed to open '.$file); 
$count = 0; 
$max = 2; 
foreach($xml->computer as $computer){  
    $count++; 
    echo '<td class="">'. "<a href='computer.php?cgid=".$computer['group_id']. 
     "'>".$computer['name']."</a>";'</td>'; 
    if($count >= $max){ 
     $count = 0; 
     echo '</tr><tr>'; 
    } 
} 

結果

<computers> 
<results totalPages="1" currentPage="1" totalResults="241"/> 
    <computer id="14590" group_id="232" model_group="acer" name="Acer 1 GB" /> 
    <computer id="308382" group_id="232" model_group="acer" name="Acer 2 GB" /> 
    <computer id="308383" group_id="232" model_group="acer" name="Acer 3 GB" /> 
    <computer id="302719" group_id="232" model_group="acer" name="Acer 4 GB"/> 
    <computer id="308384" group_id="232" model_group="acer" name="Acer 6 GB" /> 
    <computer id="308385" group_id="232" model_group="acer" name="Acer 8 GB" /> 
    <computer id="302720" group_id="232" model_group="acer" name="Acer 16 GB" /> 
    <computer id="308386" group_id="232" model_group="acer" name="Acer 32 GB" /> 
    <computer id="302715" group_id="232" model_group="acer" name="Acer 48 GB" /> 

我想要做的就是組的結果,目前我得到的名稱Acer在多個按鈕反覆,當我拉的結果,我想要做的就是展示對於該組ID中的所有項目,宏碁只是一次,幾乎就像MYSQl查詢中的截然不同。

這可能嗎?

+0

你能預期的結果添加到您的問題嗎? – raina77ow

+0

謝謝,基本上我只想顯示所有產品的名稱acer oncer,此刻acer會返回多次,就像您在上面的結果中看到的那樣。我想要做的就是每次使用相同的組標識顯示結果時只顯示一次該名稱,如果這樣做合理的話。 –

+0

所有的XML條目都遵循相同的格式嗎?所有計算機名稱都由model_group開始? 如果不是,這將是困難的。 – BAK

回答

0

我建議使用關聯數組作爲中間變量:

groups[groupName][] = item; 

所以項目將被添加到由組名即「宏」在您的示例索引的列表的末尾。

代碼是明確的:

$file = 'http://mywebsite.com/test.xml?apikey=*******&API=TEST&limit=30'; 
if(!$xml = simplexml_load_file($file)) { 
    exit("Failed to open '$file'"); 
} 
foreach($xml->computer as $computer){ 
    $index = $computer['model_group']; 
    $computerGroups[$index] = array(); 
    $computerGroups[$index][] = $computer; 
} 
foreach($computerGroups as $groupname => $computers){  
    foreach($computer as $computers){  
     ... 
    } 
} 
+0

嗨,謝謝,所以在上面的示例中,我將groupName部分更改爲是模型組,然後是項目部分名稱?謝謝 –

+0

示例代碼添加 – Aubin

+0

謝謝,非常感謝,我補充說,我的網頁,並得到以下錯誤:警告:非法偏移類型在/home/mysite/public_html/computer.php第8行是指這一行$ computerGroups [ $ computer ['model_group']] [] = $ computer; –