PHP. Как удалить элемент из массива
Если вы хотите удалить элемент массива, то вы можете использовать unset() или array_splice().
Также, если у вас есть значение и вы не знаете ключ для удаления элемента, вы можете использовать, array_search() чтобы получить ключ.
Как в PHP удалить элемент массива при помощи unset()
Обратите внимание, что при использовании unset() ключи массива не будут изменяться / переиндексироваться. Если вы хотите переиндексировать ключи, то используйте array_values() после unset(), что приведет к тому, что все ключи будут пронумерованы начиная с 0.
<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
unset($array[1]);
//↑ Ключ, который нужно удалить
?>
Результат
[
[0] => a
[2] => c
]
При помощи array_splice()
Если вы используете array_splice(), то они будут автоматически переиндексированы, но ассоциативные ключи не изменятся, в отличие от array_values(), где все ключи будут преобразованы в цифровые.
Также в array_splice() необходимо указать смещение, а не ключ!
Код
<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
array_splice($array, 1, 1);
//↑ Смещение, которое нужно удалить
?>
Результат
[
[0] => a
[1] => c
]
array_splice() это же самое, что unset() – взять массив по ссылке. Это означает, что вы не хотите присваивать возвращаемые значения этих функций обратно в массив.
Удалить несколько элементов массива
Если вы хотите удалить несколько элементов массива и не хотите вызывать unset() или array_splice() несколько раз, вы можете использовать функции array_diff() или в array_diff_key() зависимости от того, знаете ли вы значения или ключи элементов, которые вы хотите удалить.
При помощи array_diff()
Если вам известны значения элементов массива, которые вы хотите удалить, то вы можете их использовать array_diff(). Как и раньше, unset() не будет изменять / переиндексировать ключи массива.
Код
<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
$array = array_diff($array, ["a", "c"]);
//└────────┘→ Значения массива, которые нужно удалить
?>
Результат
[
[1] => b
]
При помощи array_diff_key()
Если вы знаете ключи элементов, которые вы хотите удалить, то вы можете использовать array_diff_key().
Здесь вы должны убедиться, что вы передаете ключи как ключи во втором параметре, а не как значения. В противном случае вы должны перевернуть массив при помощи array_flip(). Тогда ключи не будут меняться /переиндексироваться.
<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
$array = array_diff_key($array, [0 => "xy", "2" => "xy"]);
//↑ ↑ Ключи массива, которые нужно удалить
?>
Результат
[
[1] => b
]
Если вы хотите использовать unset() или array_splice() чтобы удалить несколько элементов с одинаковым значением, то вы можете использовать, array_keys() чтобы получить все ключи для определенного значения, а затем удалить все элементы.
Рекомендуемые статьи:
- Как изменить версию PHP на сервере с Debian 10
- PhpMyAdmin — как создать пользователя и базу данных
- Wordpress — как отключить управление сайтом через xmlrpc
- Несколько причин медленной работы сайта на примере Wordpress
- Wordpress - смена домена сайта при помощи wp-cli
- Когда использовать index.php, а когда index.html
- Дата и время в PHP
- PHP. Различия между Fast-CGI, CGI, Mod-PHP, SuPHP, PHP-FPM
- Простой пример кода на языке PHP
- PHP. Проверка содержит ли строка определенное слово
- Как предотвратить SQL инъекции в PHP
- Как установить Linux, Apache, MySQL, PHP (LAMP) в Ubuntu 18.04
- Как настроить отображение ошибок в PHP
- Несколько трюков и секретов PHP