Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как избегать повторяющихся значений при создании массива из MySQL?

Just Me Знаток (266), на голосовании 3 года назад
Подскажите как сделать чтоб PHP код игнорировал повторения значений и вносил только новые значения по одному разу. Например, ["chapter1 ", "chapter2 ", "chapter3 " ...]. Сейчас у меня получается вот так ["chapter1 ","chapter1 ","chapter1 ","chapter1 ","chapter1 " ...]

$sql = "SELECT * FROM `besty` WHERE `category` LIKE '$name'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
while($row = $result->fetch_array()) {
array_push($ma, ['id'=> $row["id"], 'quote'=> $row["quote"], 'chapter'=> $row["chapter"] ]);
}
}
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (445813) 3 года назад
А ничего, что у тебя там другие значения разные? Если тебе нужен только chapter, так и запрашивай только уникальный chapter, и его же в массив пихай. А если ты хранишь в массиве целые картежи, то не получится.
Just MeЗнаток (266) 3 года назад
"Если тебе нужен только chapter, так и запрашивай только уникальный chapter, и его же в массив пихай." вот это мне и надо, только без повторений.

Итак, вот что у меня получилось.

$result = array_unique($category); //избавляюсь от повторений, как бонус, получаю смещение индексов.

foreach ($result as $index){ // Индексы вырвниваю

array_push($new_category, $index); и создаю новый массив
}
Этот код ужасен. Подскажите как его улучшить
Jurijus Zaksas Искусственный Интеллект (445813) Я за ПХП не скажу, но почему бы тебе не получить сразу из базы уникальный список? $sql = "SELECT DISTINCT `category` FROM `besty` WHERE `category` LIKE '$name'";
Похожие вопросы