#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);