2012-03-15 2 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(); 
     } 

Мое понимание - это мое эхо $ row-> Recipe; должен каким-то образом существовать на собственном опыте. Я смотрю в array_unique, чтобы повторить значение только один раз, но я не могу точно понять это. Если бы кто-то мог указать мне в правильном направлении, это было бы здорово.

ОБНОВЛЕНИЕ Спасибо за все ответы. Я исправил хранимую процедуру, чтобы возвращать уникальные строки.

+1

Как насчет возврата уникальных строк из процедуры? –

ответ

0

Создайте временный массив до времени и сохраните каждый Рецепт в нем, который был эхом. Перед тем, как эхо проверить временный массив для текущего Рецепта (если он содержит, не эхо его второму эхо & храните его во временном массиве).

0

Если вы не можете изменить структуру базы данных, которую я бы порекомендовал, вы могли бы сначала сохранить информацию, которую вы получаете из запроса базы данных, в объекты (например, некоторые объекты Рецепта с массивом объектов Ингредиенты), а затем создать свой фактический вывод.

Если вы можете изменить структуру базы данных или способ запроса (если последнее уже дает вам то, что я хочу вам рекомендовать), вы можете иметь таблицу (при условии, что база данных является реляционной) для рецептов с каким-то ID и другой таблицы для ингредиентов рецептов, где каждая строка ингредиентов также хранит идентификатор рецепта, к которому он принадлежит.

Смежные вопросы