При удалении из массива, удаленный элемент дублируется и остается в массиве?

Ссылка скопирована
4 февраля 2026 1 ответ

Есть проверка добавлять или удалять элемент из массива:

if (!!query.follow) {      // append      const queryForUpdateAppPerson = `UPDATE person SET tracks = array_append(tracks, $1) WHERE id = $2`;      await db.query(queryForUpdateAppPerson, [+id, user.id]); } else {     // remove     const queryForUpdateRemPerson = `UPDATE person SET tracks = array_remove(tracks, $1) WHERE id = $2`;     await db.query(queryForUpdateRemPerson, [+id, user.id]); }

if (!!query.follow) { // append const queryForUpdateAppPerson = `UPDATE person SET tracks = array_append(tracks, $1) WHERE id = $2`; await db.query(queryForUpdateAppPerson, [+id, user.id]); } else { // remove const queryForUpdateRemPerson = `UPDATE person SET tracks = array_remove(tracks, $1) WHERE id = $2`; await db.query(queryForUpdateRemPerson, [+id, user.id]); }

Изначально массив выглядит так: {28,32,19,43}, при удалении допустим 28, массив выглядит так: {28,32,19,43,28}. Можете сказать как правильно удалить элемент?

Дополнительно:

Нет https://sqlize.online/sql/psql14/fc58b320123fadbd5...

  • Скорее выглядит как результат добавления. Похоже вы не туда смотрите.
  • Похоже что другая ветка if работает
  • mayton2019, да, вы правы
  • Алексей Яковлев, тогда отметьте ответом.
  • Работает другая ветка "if"

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Стас DB Ответ

    Да, при удалении элемента из массива в PHP, удаленный элемент не удаляется фактически из массива, а лишь помечается как удаленный. Это означает, что удаленный элемент по-прежнему остается в массиве, но при обращении к нему будет возвращаться значение NULL.

    Чтобы полностью удалить элемент из массива, можно воспользоваться функцией unset(), которая удаляет переменную, включая элемент массива. Пример:

    $array = array("apple", "banana", "cherry");
    unset($array[1]); // удаление элемента с индексом 1 (banana)
    print_r($array);

    $array = array("apple", "banana", "cherry"); unset($array[1]); // удаление элемента с индексом 1 (banana) print_r($array);

    После выполнения данного кода элемент "banana" будет полностью удален из массива, и массив будет иметь вид:

    Array
    (
        [0] => apple
        [2] => cherry
    )

    Array ( [0] => apple [2] => cherry )

    Таким образом, чтобы избежать дублирования удаленных элементов в массиве, следует использовать функцию unset() для полного удаления элемента.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно