Удаление дублированных записей из массива

#php

#php

Вопрос:

Для удаления дублированных записей, которые я знаю, я должен использовать array_unique() , но, к сожалению, используя это, я получил неожиданный результат (ы). Мой PHP-код таков:

     $query = $db->query("
SELECT sid,father_contact,residential_contact
FROM ".TABLE_PREFIX."student_list
{$where_clause}
ORDER BY sid ASC");
while ($s = $db->fetch_array($query))
{
    if (!empty($s['father_contact']))
    {
        $father_contact = $s['father_contact'].', ';
    }
    else
    {
        $father_contact = '';
    }

    if (!empty($s['residential_contact']))
    {
        $residential_contact = $s['residential_contact'].', ';
    }
    else
    {
        $residential_contact = '';
    }

    $phone_nums_bit .= $father_contact.$residential_contact;
}
  

Это захватывает все телефонные номера из таблиц базы данных и выводит результат следующим образом:

 03334523675, 03124237009, 03134237002, 03124237009, 03217832173, 03134237002, 3134237002, 03124237009, 
  

Обратите внимание, что несколько подобных чисел 03134237002 повторяются трижды. Я хочу удалить дублирующиеся записи из этого результата. Пожалуйста, помогите мне разобраться. Спасибо.

Комментарии:

1. SELECT DISTINCT

2. @JayBlanchard: тоже пробовал, но, к сожалению, это не помогло.

3. Когда вы говорите, вы получаете неожиданные результаты. Какие именно результаты вы получаете? Я нигде не вижу array_unique() в вашем коде

Ответ №1:

Вы можете попробовать сделать это с помощью структур массива. Просто чтобы дать вам представление:

 $phones = [];
while ($s = $db->fetch_array($query))
{
    if (!empty($s['father_contact']))
    {
        $phones[] = $s['father_contact'];
    }

    if (!empty($s['residential_contact']))
    {
        $phones[] = $s['residential_contact'];
    }
}
$phones = array_unique($phones);
// and then combine into string
$phone_nums_bit = implode(', ', $phones);