Как удалить значения из массива в PHP?

Есть ли функция PHP для удаления определенных элементов массива из массива?

Например, у меня есть массив ( A ) со значениями и другой массив ( B ), из которого необходимо удалить значения.

Хотите удалить значения из массива A из массива B ?

Solutions Collecting From Web of "Как удалить значения из массива в PHP?"

Использовать array_diff()

 $new_array = array_diff($arrayB, $arrayA); 

будет возвращать массив со всеми элементами из $arrayB , которые не находятся в $arrayA .

Для этого с ассоциативными массивами используйте array_diff_assoc() .

Чтобы удалить одно значение, используйте:

 unset($array[$key]); 

Вы можете, конечно, сделать это, чтобы выполнить эквивалент функций массива, но в этом нет никакого смысла.

Это зависит от того, что вы подразумеваете под «удалением».

Вы можете использовать функцию unset () для удаления ключей из вашего массива, но это не будет переиндексировать ее. Например, если у вас есть:

 $a = array(1 => 'one', 2 => 'two', 3 => 'three'); 

и затем вы вызываете

 unset($a[2]); 

Вы получите что-то вроде

 (1 => 'one', 3 => 'three'); 

Если вам нужно, чтобы массив был последовательно проиндексирован, вы можете взять не заданный массив и передать его в array_values ​​(), который вернет новый массив с последовательно индексированными ключами.

Возвращаясь к исходному сценарию, как другие наблюдают, array_diff выполнит эту работу для вас, но обратите внимание, что она не выполняет проверку индекса. Если вам это нужно, используйте array_diff_assoc.

Функция array_diff сделает это за вас.

 $array1 = array("a" => "green", "red", "blue", "red"); $array2 = array("b" => "green", "yellow", "red"); $result = array_diff($array1, $array2); print_r($result); 

Я пришел к этому сообщению, ища способ удалить одно значение из массива (который указан в заголовке). Вот прямой путь, предполагая, что значение для удаления находится в массиве:

 $list = array('foo', 'bar', 'yay', '\o/'); $toremove = 'foo'; unset($list[array_search($toremove, $list)]); 

Хотя это приведет к ошибкам, если элемент для удаления не является частью массива.

Еще одно решение, но не очень оптимизированное представление:

 $list = array('foo', 'bar', 'yay', '\o/'); $toremove = 'foo'; $list = array_flip($list); unset($list[$toremove]); $list = array_flip($list); с $list = array('foo', 'bar', 'yay', '\o/'); $toremove = 'foo'; $list = array_flip($list); unset($list[$toremove]); $list = array_flip($list); 

Во всяком случае, возможно, создание массива с единственным значением, использующим array_diff, как предлагается всеми здесь, быстрее и эффективнее.

Возможно, это простое и быстрое решение. Простое повторение, которое может удалять (отменять) несколько значений в массиве.

  // Your array $list = array("apple", "orange", "strawberry", "lemon", "banana"); // Initilize what to delete $delete_val = array("orange", "lemon", "banana"); // Search for the array key and unset foreach($delete_val as $key){ $keyToDelete = array_search($key, $list); unset($list[$keyToDelete]); } с  // Your array $list = array("apple", "orange", "strawberry", "lemon", "banana"); // Initilize what to delete $delete_val = array("orange", "lemon", "banana"); // Search for the array key and unset foreach($delete_val as $key){ $keyToDelete = array_search($key, $list); unset($list[$keyToDelete]); }