PHP: как удалить элемент массива по значению
Часто случаются ситуации, когда нам в PHP необходимо удалить определенные значения из массива. Как правило, для этого чаще всего применяется перебор, через конструкцию for или фильтрация с помощью array_filter однако, почему-то часто забывается про возможности функции array_diff .
На самом деле, удаление значений из массива через array_diff выглядит более простым и лаконичным, к тому-же мы можем удалять (вычитать) из исходного массива сразу несколько массивов с необходимыми значениями, которые могут повторяться. К примеру, вот такой код:
<?php $sourceArray = [ 2, 'a', 'b', 'c', 1, 2, 3 ]; $subtractedSource = array_diff($sourceArray, [ 'a' ], [ 2, 'c' ], [ '2' ]); print_r($subtractedSource);
выдаст нам вот такой результат:
Array ( [2] => b [4] => 1 [6] => 3 )
Здесь стоит помнить, что решение об удалении значения используется после приведения сравниваемых значений к строке и тождественному сравнению, т.е. когда выполняется следующее условие (string) $value1 === (string) $value2 . А так-же то, что ключи исходного массива остаются без изменения. Поэтому стоить понимать, что результатом вот такого примера:
<?php $sourceArray = [ 0 => true, 1 => 1, 2 => 'true', 3 => false, 4 => -1, 5 => 0, 6 => 'false' ]; $subtractedSource = array_diff($sourceArray, [ true ], [ '' ]); var_dump($subtractedSource);
будет следующий вывод:
array(4) { [2] => string(4) "true" [4] => int(-1) [5] => int(0) [6] => string(5) "false" }
Если вам такое поведение не по душе, вы можете написать собственную функцию сравнения (компаратор) и использовать ее через array_udiff .
Опубліковано: 14/12/20 @ 07:48
Розділ php
Рекомендуємо:
Как я работаю: Александр Гончар, Chief AI Officer в Neurons Lab
PHP: заменить значения массива значениями из другого массива по ключам
Зачем приложению для аренды квартир bird нужны нейросети и как они работают
Как стать классным джуном. План действий, который поможет быстро расти
Эффективная креативность: как стать хорошим гейм-дизайнером. Часть 1