У меня есть регулярный массив с ключами и значениями.
есть ли простой способ удалить элемент массива на основе его значения или мне нужно выполнить цикл foreach и проверить каждое значение, чтобы удалить его?
http://us3.php.net/array_filter
Пример PHP 5.3 для удаления «foo» из массива $ a:
<?php $a = array("foo", "bar"); $a = array_filter($a, function($v) { return $v != "foo"; }); ?>
Второй параметр может быть любым видом обратного вызова PHP (например, имя функции в виде строки). Вы также можете использовать функцию генерации функции, если значение поиска не является постоянным.
array_diff:
$array = array('a','b','c'); $array_to_remove = array('a'); $final_array = array_diff($array,$array_to_remove); // array('b','c');
изменить: для получения дополнительной информации: http://www.php.net/array_diff
Вы должны сделать это с помощью комбинации array_search()
и array_splice()
.
Untested, но должен работать для массивов, которые содержат значение только один раз:
$array = array("Apples", "strawberries", "pears"); $searchpos = array_search("strawberries", $array); if ($searchpos !== FALSE) { array_splice($array, $searchpos, 1); }
Short Answer unset($array[array_search('value', $array)]);
объяснение
$key = array_search('value', $array);
unset($array[$key]);
Если ваш массив имеет уникальные значения, вы можете перевернуть их с помощью array_flip