Удаление значений из PHP массива: способы и примеры
В PHP существует несколько способов удаления элементов из массива. Выбор метода зависит от типа массива (ассоциативный или числовой), необходимости переиндексации, количества удаляемых элементов и критериев удаления. Далее рассмотрены основные варианты.
Основные методы удаления элементов массива
Как удалить элемент по его ключу, сохранив остальные ключи?
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3];
unset($arr['b']);
print_r($arr);
?>Php удаление массива (удаление массива php)
Array
(
[a] => 1
[c] => 3
)
Функция unset() удаляет переменную или элемент массива по ключу. Ключи остальных элементов не изменяются. В числовых массивах это приводит к образованию «дыр» в индексах.
Как удалить элемент и автоматически переиндексировать числовой массив?
<?php
$arr = [10, 20, 30, 40];
array_splice($arr, 1, 1); // удалить элемент с индексом 1
print_r($arr);
?>
Array
(
[0] => 10
[1] => 30
[2] => 40
)
array_splice() удаляет указанное количество элементов, начиная с заданного смещения, и переиндексирует массив. Работает только с числовыми индексами.
Как удалить последний элемент массива?
<?php
$arr = [1, 2, 3, 4];
$last = array_pop($arr);
print_r($arr);
echo "Удалённый элемент: $last";
?>
Array
(
[0] => 1
[1] => 2
[2] => 3
)
Удалённый элемент: 4
array_pop() извлекает и возвращает последний элемент массива, уменьшая длину массива на единицу. Массив переиндексируется автоматически.
Как удалить первый элемент массива?
<?php
$arr = [1, 2, 3, 4];
$first = array_shift($arr);
print_r($arr);
echo "Удалённый элемент: $first";
?>
Array
(
[0] => 2
[1] => 3
[2] => 4
)
Удалённый элемент: 1
array_shift() удаляет первый элемент, сдвигая все остальные к началу и переиндексируя массив. Ассоциативные ключи сохраняются.
Как удалить элементы, удовлетворяющие определённому условию?
<?php
$arr = [1, 2, 3, 4, 5, 6];
$filtered = array_filter($arr, function($v) {
return $v % 2 == 0; // оставить только чётные
});
print_r($filtered);
?>
Array
(
[1] => 2
[3] => 4
[5] => 6
)
array_filter() с callback-функцией оставляет только те элементы, для которых callback вернул true. По умолчанию ключи сохраняются, но могут быть несплошными.
Как удалить элементы с определёнными значениями?
<?php
$arr = [1, 2, 3, 4, 2, 5];
$result = array_diff($arr, [2, 4]);
print_r($result);
?>
Array
(
[0] => 1
[2] => 3
[4] => 5
)
array_diff() возвращает массив, содержащий все элементы первого массива, которые отсутствуют во втором (или последующих) массивах. Сравнение значений происходит строго (==).
Как удалить несколько непоследовательных элементов из числового массива и переиндексировать?
<?php
$arr = [0,1,2,3,4,5,6];
// Удалить элементы с индексами 1,3,5
foreach ([1,3,5] as $key) {
unset($arr[$key]);
}
$arr = array_values($arr);
print_r($arr);
?>
Array
(
[0] => 0
[1] => 2
[2] => 4
[3] => 6
)
Комбинация unset() с последующим array_values() позволяет удалить произвольные ключи и затем переиндексировать массив.
Расширенные примеры демонстрируют нестандартные сценарии удаления элементов из массивов PHP.
Подробные примеры удаления элементов из массива
Как удалить элемент по ключу с проверкой его существования?
<?php
$arr = ['name' => 'Alex', 'age' => 25, 'city' => 'Moscow'];
$key = 'age';
if (array_key_exists($key, $arr)) {
unset($arr[$key]);
echo "Ключ '$key' удалён.\n";
} else {
echo "Ключ '$key' не найден.\n";
}
print_r($arr);
?>
Ключ 'age' удалён.
Array
(
[name] => Alex
[city] => Moscow
)
Проверка существования ключа через array_key_exists() предотвращает ошибки при удалении несуществующего элемента.
Как удалить все элементы, кроме первого и последнего?
<?php
$arr = [1,2,3,4,5,6,7];
array_splice($arr, 1, count($arr)-2);
print_r($arr);
?>
Array
(
[0] => 1
[1] => 7
)
array_splice() удаляет все элементы, начиная с индекса 1, оставляя только первый и последний.
Как удалить пустые строки и null из массива?
<?php
$data = ['PHP', '', null, 'HTML', 0, false, 'CSS'];
$clean = array_filter($data, function($v) {
return $v !== '' && $v !== null;
});
print_r(array_values($clean));
?>
Array
(
[0] => PHP
[1] => HTML
[2] => CSS
)
Использование array_filter() с явным callback позволяет точно указать, какие значения оставить.
Как удалить несколько конкретных значений с учётом типа?
<?php
$arr = ['1', 2, '2', 3, 4];
$remove = [2, '2']; // строгое сравнение
$result = array_diff($arr, $remove); // использует (string) $a == (string) $b
print_r($result);
?>
Array
(
[0] => 1
[3] => 3
[4] => 4
)
array_diff() использует нестрогое сравнение, поэтому строки и числа могут совпадать. Для строгого сравнения используйте array_udiff().
Как удалить элемент из многомерного массива по пути?
<?php
$data = [
'users' => [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob']
]
];
// Удалить пользователя с id=2
foreach ($data['users'] as $i => $user) {
if ($user['id'] == 2) {
unset($data['users'][$i]);
break;
}
}
$data['users'] = array_values($data['users']);
print_r($data);
?>
Array
(
[users] => Array
(
[0] => Array
(
[id] => 1
[name] => Alice
)
)
)
Удаление из многомерного массива требует доступа к нужному ключу внутри вложенной структуры и последующей переиндексации при необходимости.
Как удалить повторяющиеся значения (дубликаты) из массива?
<?php
$arr = [1,2,2,3,4,4,5];
$unique = array_unique($arr);
print_r($unique);
?>
Array
(
[0] => 1
[1] => 2
[3] => 3
[4] => 4
[6] => 5
)
array_unique() удаляет дубликаты, сохраняя первые вхождения. Ключи не переиндексируются.