删除从while循环中获取的重复项

时间:2012-03-15 14:44:08

标签: php arrays pdo

我希望从带有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();
        }

我的理解是我的回声$ row-&gt;食谱;必须以某种方式存在于它自己。我正在调查array_unique只回显一次值,但我似乎无法弄明白。如果有人能指出我正确的方向,那就太好了。

更新 感谢所有响应,我已修复存储过程以返回唯一行。

2 个答案:

答案 0 :(得分:0)

在while之前创建一个临时数组,并在其中存储已回显的每个Recipe。在echo之前检查当前Recipe的临时数组(如果它包含不回显它的其他信号echo并将它存储在临时数组中)。

答案 1 :(得分:0)

如果您无法更改我建议的数据库结构,您可以先将从数据库查询中获取的信息存储到对象中(例如某些带有一系列成分对象的Recipe对象),然后构建实际输出

如果您可以更改数据库结构或查询方式(如果后者已经提供了我将要推荐的内容),您可以为具有某种ID的配方创建一个表(假设数据库是关系的)和另一个食谱成分的表格,其中每个成分行也存储它所属的食谱的ID。