# Проверяем отстутствие элемента массива в PHP

Давайте теперь попробуем сделать так, чтобы, если в массиве вообще нет элементов со значением `3`, выводилось `'нет'`. Распространенным заблуждением будет добавить `else` к нашему ифу - в этом случае `'нет'` будет выводиться на все элементы, не являющиеся `3`:

`<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo 'есть'; // выведет на элементе 3 } else { echo 'нет'; // выведет на элементах 1, 2, 4, 5 } } ?>`

Итак, идея добавить `else` - плохая идея, не рабочая. Для решения задач подобного типа и используют переменные-флаги.

Давайте сделаем такую переменную со следующем поведением: если она равна `true`, то в массиве есть элемент `3`, а если `false`, то такого элемента нет. Изначально поставим наш флаг в значение `false` - то есть будем считать, что элемента `3` в массиве нет:

`<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // считаем, что элемента 3 в массиве нет ?>`

Затем запустим цикл с ифом так, как мы делали это раньше. Если цикл обнаружит, что в массиве есть элемент `3` - то поставим переменную `$flag` в значение `true` и выйдем из цикла с помощью `break`:

`<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // считаем, что элемента 3 нет в массиве foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // элемент есть - переопределим переменную $flag break; // выйдем из цикла } } ?>`

Ответ на вопрос, есть ли в массиве `3` или нет, мы можем дать только после цикла. И этот ответ у нас уже есть: после цикла переменная `$flag` могла остаться `false` или могла сменить свое значение на `true`, если цикл обнаружил в массиве `3`:

`<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // тут переменная $flag равна или true, или false ?>`

Теперь после цикла мы можем сделать иф, который посмотрит на переменную `$flag` и выведет на экран `'есть'` или `'нет'`:

`<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } if ($flag === true) { echo 'есть'; } else { echo 'нет'; } ?>`

Дан массив:

`<?php $arr = ['a', 'b', 'c', 'd', 'e']; ?>`

Проверьте, что в этом массиве есть элемент `'c'`. Если есть - выведите `'да'`, а если нет - выведите `'нет'`.

← →
↑