Как удалить элемент массива в цикле Foreach?

Яна Мельникова
Яна Мельникова
  • Сообщений: 24
  • Последний визит: 7 марта 2025 в 13:17

Я хочу пройти через массив с foreach Чтобы проверить, существует ли значение. Если значение существует, я хочу удалить элемент, который его содержит.

У меня есть следующий код:

 
foreach($display_related_tags as $tag_name) {     if($tag_name == $found_tag['name']) {         // Delete element     } }
 

Я не знаю, как удалить элемент после того, как значение будет найдено. Как удалить его?

Я должна использовать foreach для этой проблемы. Вероятно, есть альтернативы foreach, и вы можете поделиться ими.

Иван Терешенко
Иван Терешенко
  • Сообщений: 35
  • Последний визит: 15 апреля 2025 в 18:17

Лучшее решение — использовать array_filter Функция:

$display_related_tags =     array_filter($display_related_tags, function($e) use($found_tag){         return $e != $found_tag['name'];     }); 
Афанасий Никольцев
Афанасий Никольцев
  • Сообщений: 14
  • Последний визит: 12 марта 2025 в 03:13

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

 
$result=array_search($unwantedValue,$array,true); if($result !== false) {   unset($array[$result]);    }
 

Строгий оператор COMPARSION! == необходим, потому что Array_Search () может вернуть 0 в качестве индекса $ нежелательной.

Кроме того, приведенный выше пример удалит только первое значение $ notemedValue, если $ noteantEdValue может произойти более чем один раз в массиве $, вы должны использовать array_keys (), чтобы найти все из них:

 
$result=array_keys($array,$unwantedValue,true) foreach($result as $key) {   unset($array[$key]); }
 

Авторизуйтесь, чтобы писать на форуме.

Заявка на услуги DST

Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.

Адрес

Ижевск, ул. Воткинское шоссе, д. 170 Е, Технопарк Нобель, офис 1117

8 495 1985800
Заказать звонок

Режим работы: Пн-Пт 10:00-19:00

info@dstglobal.ru

Задать вопрос по почте

Укажите ваше имя
Укажите ваше email
Укажите ваше телефон