2012-03-15 74 views
0

我希望从一个数组中删除重复项,我使用while循环从存储过程调用。删除从while循环中获取的重复项

// Prepare stored procedure call 
    $sth = $dbh->prepare('CALL sp_get_recipes()'); 

    // Call the stored procedure 
    $res = $sth->execute(); 

    if ($res){     
     while($row = $sth->fetchObject()){ 
      echo $row->Recipe; // I would like to echo this row just once. 
      echo '<ul class="recipe-body"><li>'.$row->Ingredient."&nbsp;".$row->Quantity."&nbsp;".$row->UoM.'</li></ul>'; 
      } 
     // Close connection 
      $dbh = null; 
     }else{ 
     $arr = $sth->errorInfo(); 
     echo "Execution failed with MYSQL: " . $arr[0] . "\n"; 
     die(); 
     } 

我的理解是我的echo $ row-> Recipe;必须以某种方式自己存在。我一直在研究array_unique来回显值,但我似乎无法完全弄清楚。如果有人能指引我朝着正确的方向发展,那就太好了。

UPDATE 感谢所有的答复我已经修复了存储过程以返回唯一行。

+1

如何从程序返回唯一行? – 2012-03-15 14:45:59

回答

0

在时间之前创建一个临时数组,并将每个配方存储在已经回显的配方中。在回声检查当前配方的临时数组之前(如果它包含不回显它的其他等待回声&将其存储在临时数组中)。

0

如果你不能改变数据库结构,我建议你可以首先将你从数据库查询中得到的信息存储到对象中(例如某些配方对象与一组成分对象),然后建立你的实际输出。

如果你可以改变数据库结构或查询方式(如果后者已经给你我要推荐的东西),你可以有一个表(假设数据库是关系型的) ID和另一个食谱配料表,其中每个配料行还存储它所属食谱的ID。