我有以下代码可以获得以下结果。
$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中的所有项目显示名称Acer一次? ,几乎像MYSQl查询中的不同。
这可能吗?
答案 0 :(得分:0)
我建议使用关联数组作为中间变量:
groups[groupName][] = item;
因此,项目将被添加到groupname索引的列表的末尾,即示例中的“Acer”。
代码要明确:
$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 ){
...
}
}