удалить элемент из массива на основе его значения? - PullRequest
10 голосов
/ 31 января 2010

У меня есть обычный массив с ключами и значениями.

Есть ли простой способ удалить элемент массива на основе его значения или мне нужно выполнить цикл по каждому элементу и проверить каждое значение, чтобы удалить его?

Ответы [ 5 ]

29 голосов
/ 31 января 2010

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

11 голосов
/ 31 января 2010

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 (например, имя функции в виде строки). Вы также можете использовать функцию генерации функции, если значение поиска не является постоянным.

3 голосов
/ 14 мая 2017

Короткий ответ unset($array[array_search('value', $array)]);

Объяснение

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

Вы можете сделать это с помощью комбинации array_search() и array_splice().

Не проверено, но должно работать для массивов, которые содержат значение только один раз:

$array = array("Apples", "strawberries", "pears");
$searchpos = array_search("strawberries", $array);
if ($searchpos !== FALSE) {
  array_splice($array, $searchpos, 1);
}
0 голосов
/ 31 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...