2

我有以下一段代码,它得到以下结果。

$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 查询中不同。

这可能吗?

4

1 回答 1

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 ){       
      ...
   }
}
于 2012-11-10T13:10:23.110 回答