Php 组结果来自一个简单的xml

Php 组结果来自一个简单的xml,php,xml,Php,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){

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

$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>';
   }
}
$file='1!'http://mywebsite.com/test.xml?apikey=*******&API=试验和限值=30';
如果(!$xml=simplexml\u加载文件($file))
退出('打开'.$文件失败);
$count=0;
$max=2;
foreach($xml->computeras$computer){
$count++;
回声“.”;“;
如果($count>=$max){
$count=0;
回声';
}
}
结果

<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查询中的distinct


这可能吗?

我建议使用关联数组作为中间变量:

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 ){       
      ...
   }
}

您能否将预期结果添加到您的问题中?谢谢,基本上我只想显示所有产品的名称acer oncer,目前acer返回的次数与您在上述结果中看到的次数相同。如果有意义的话,我想做的是每次结果以相同的组id出现时只显示一次名称。所有XML条目都采用相同的格式吗?所有计算机名称是否以model_组开头?如果没有,这将很困难。嗨,是的,这是输出,例如,每台acer计算机都有相同的组id、相同的型号组名称等,只是名称属性不同。谢谢,因此在上面的示例中,我是否会将组名部分更改为型号组,然后将项目部分更改为名称?谢谢,非常感谢,我把它添加到我的页面中,并得到以下错误:警告:在第8行的/home/mysite/public_html/computer.php中输入非法偏移量,该行引用$computerGroups[$computer['model_group']][=$computer;