Я думаю, что array_search - намного более читаемый код, чем использование метода array_diff. Upvote
kendepelchin
@zombat Интересно, имеет ли порядок какое-либо отношение к результатам. Возможно, что shuffle поместит искомое значение ближе к фронту или к концу. Кроме этого ... +1
Наиболее мощным решением будет использование array_filter, которое позволяет вам определить свою собственную функцию фильтрации.
Но некоторые могут сказать, что это немного излишне, в вашей ситуации ...
Простого foreachцикла, чтобы пройти массив и удалить ненужный элемент, должно быть достаточно.
Что-то вроде этого в вашем случае, вероятно, должно сработать:
foreach($items as $key => $value){if($value == $id){
unset($items[$key]);// If you know you only have one line to remove, you can decomment the next line, to stop looping//break;}}
Ответы:
Это может быть достигнуто с простым однострочником.
Имея этот массив:
Ты можешь сделать:
И стоимость
$arr
будет:Надеюсь, это поможет написать красивый код.
источник
array_diff
функция является неразрушающей, он возвращает новый массив.$referenced = array_diff($referenced, $items_to_remove);
Я добавляю второй ответ. Я написал скрипт быстрого бенчмаркинга, чтобы попробовать различные методы здесь.
Третий метод
array_keys()
с указанием необязательного параметра поиска, похоже, является наилучшим. Пример вывода:Судя по этому, решение, которое я бы использовал тогда, было бы:
источник
Как насчет:
или для нескольких значений:
Это также предотвратит потерю ключа, что является побочным эффектом
array_flip()
.источник
удалить
$rm_val
из$arr
источник
Наиболее мощным решением будет использование
array_filter
, которое позволяет вам определить свою собственную функцию фильтрации.Но некоторые могут сказать, что это немного излишне, в вашей ситуации ...
Простого
foreach
цикла, чтобы пройти массив и удалить ненужный элемент, должно быть достаточно.Что-то вроде этого в вашем случае, вероятно, должно сработать:
источник
Попробуйте array_search ()
источник
array_keys()
кажется, работает лучше, чемarray_search()
для этой задачи.Ваши решения работают, только если у вас есть уникальные значения в вашем массиве
Видеть:
Лучший способ был бы не установлен с array_search , в цикле, если это необходимо.
источник
без флип:
источник
источник
Вы можете использовать функцию array_splice для этой операции Ref: array_splice
источник