При удалении из массива, удаленный элемент дублируется и остается в массиве?
Есть проверка добавлять или удалять элемент из массива:
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"
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Да, при удалении элемента из массива в PHP, удаленный элемент не удаляется фактически из массива, а лишь помечается как удаленный. Это означает, что удаленный элемент по-прежнему остается в массиве, но при обращении к нему будет возвращаться значение NULL.
Чтобы полностью удалить элемент из массива, можно воспользоваться функцией unset(), которая удаляет переменную, включая элемент массива. Пример:
$array = array("apple", "banana", "cherry"); unset($array[1]); // удаление элемента с индексом 1 (banana) print_r($array);
После выполнения данного кода элемент "banana" будет полностью удален из массива, и массив будет иметь вид:
Array ( [0] => apple [2] => cherry )
Таким образом, чтобы избежать дублирования удаленных элементов в массиве, следует использовать функцию unset() для полного удаления элемента.