удалить элемент из массива на основе его значения?

У меня есть регулярный массив с ключами и значениями.

есть ли простой способ удалить элемент массива на основе его значения или мне нужно выполнить цикл 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)]);

объяснение

  1. Найдите ключ по его значению: $key = array_search('value', $array);
  2. удалить элемент массива по его ключу: unset($array[$key]);

Если ваш массив имеет уникальные значения, вы можете перевернуть их с помощью array_flip