Как проверить наличие значения в массиве php

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

проверить наличие значения в массиве Проверка наличия значения элемента в массиве может применяться при решении различных задач в программировании.

Мы можем получать различные массивы из нашей базы данных и проверять наличие того или иного значения в нем. Искомое значение может передаваться и от пользователя нашего скрипта, когда он, например, что-то ищет. По результатам такого поиска можно совершать определенные действия. Все зависит от конкретно поставленной задачи, однако, алгоритмы поиска значения в массиве будут одними и теми же.

Сегодня мы их рассмотрим.

Проверка наличия значения в массиве. Функция in_array()

Функция in_array() позволит нам проверить наличие какого-либо значения в массиве.

Если результат ее работы удачный и искомый элемент в массиве найден, то функция вернет true, то есть «правду».

Функция принимает 2 обязательных параметра: <Что ищем> и <Где ищем>.

Также она может принимать еще один необязательный параметр: <Тип данных>. Если этот третий необязательный параметр имеет значение true, тогда проверяется еще и тип данных. То есть ‘2’ и 2 будет не одно и то же. В первом случае – это строка, во втором – число. И тогда уже вся функция in_array() не вернет значение true.

Также нужно помнить, что функция осуществляет сравнение с учетом регистра символов.

Давайте рассмотрим работу этой функции на простом примере. Нам нужен какой-нибудь массив. При помощи функции проверим наличие значения в массиве и выведем на экран определенное сообщение.

<?php $Mass = array('www.hotmail.com','Marina',5,'website-create.ru'); if(in_array('Marina',$Mass)) echo 'Yes'; else echo 'No'; ?>

Отработав функция выведет на экран сообщение «Yes», так как элемент «Marina» в нашем массиве присутствует.

Поменяйте первый параметр в функции на какой-либо несуществующий элемент, и Вы увидите сообщение «No».

Проверка наличия значения в массиве. Функция array_search()

Существует и еще одна функция для поиска array_search(), которая в отличие от предыдущей будет возвращать ключ найденного элемента. Это в свою очередь может пригодиться, если мы работаем с ассоциативным массивом.

Функция принимает те же параметры, что и предыдущая. При этом третий параметр также является необязательным.

Давайте посмотрим, как ее можно использовать, работая с ассоциативным массивом.

<?php $Mass1=array('mounth'=>'october','money'=>200,'name'=>'Mila'); $key = array_search('Mila',$Mass1); if($key) echo $key; ?>

В данном случае мы увидим на экране «name», то есть ключ от искомого элемента со значением «Mila».

Эти две функции очень похожи и по сути отличаются только возвращаемым значением.

Поиск значения в многомерном массиве

поиск значения в многомерном массиве php А что делать, если мы работаем с многомерным массивом? Ведь его элементами будут другие массивы.

Здесь уже рассмотренные нами алгоритмы не сработают.

На самом деле все не так уж и сложно, просто нужно немного усложнить весь механизм и использовать цикл, например, foreach(), который прекрасно работает с массивами.

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

Все, что требуется сделать – это перебрать элементы первоначального массива в цикле foreach(). Каждый элемент этого массива будет разобран на ключ ($key) и значение ($value).

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

При нахождении мы выведем на экран сообщение о том, что такой элемент существует, а если нет, то выведем другое сообщение, что такого элемента нет.

Давайте посмотрим все это на примере кода:

<?php $Mass2[0] = array('name'=>'anna','id'=>234); $Mass2[1] = array('name'=>'anton','id'=>24); $Mass2[2] = array('name'=>'ivan','id'=>007); foreach($Mass2 as $key => $value) { $name .= in_array('ivan',$value); } if($name) echo 'OK! Element here!'; else echo 'No have element!'; ?>

Как Вы видите, вначале мы объявляем сам многомерный массив.

Далее в цикле foreach() проходимся по каждому из его элементов (внутренних массивов). В переменную $value на каждой итерации попадает каждый внутренний массив массива $Mass2.

А далее при помощи функции in_array() мы проверяем существование нужного нам значения элемента и заносим результат в переменную $name.

При этом здесь обязательно нужно писать не просто знак равенства, а «.=».

Делается это для того, чтобы переменная $name не перезаписывалась на каждой итерации, а дополнялась. Ведь если на первой итерации элемент будет найден и в переменную $name запишется значение «true», а на второй итерации (то есть во втором внутреннем массиве) искомого значения элемента нет, то значение переменной $name просто перезапишется, и в итоге мы просто не получим корректный результат.

Далее по результатам значения переменной $name мы выводим на экран соответствующее сообщение.

Как Вы поняли, итогом работы этого кода будет сообщение «OK! Element here!».

Попробуйте поменять искомый элемент на несуществующий и Вы увидите сообщение «No have element!».

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

Вот и все на сегодня! Надеюсь, урок был понятен и полезен! Попробуйте сами написать подобный код, чтобы разобраться во всем окончательно.

А я жду Ваших комментариев.

Делитесь уроком со своими друзьями при помощи кнопок соц. сетей, расположенных ниже. А также подписывайтесь на обновления блога. Мы уже собрали достаточно неплохой архив полезных материалов, и они будут только пополняться!

Желаю Вам успешного программирования!

С Вами была Анна Котельникова!

До новых встреч!

Многомерные и ассоциативные массивы

Устанавливаем поиск от Google на наш сайт

Создание и размещение объявлений от Google AdSense

Понравилась статья? Поделись с друзьями!


Будьте в курсе новых публикаций на Блоге!

rss podpiska

Введите Ваш E-mail:


Комментарии к этой статье:

Комментарий добавил(а): Илнур
Дата: 2014-12-26

Доброго времени всем и с наступающим 2015 Вас!!! Спасибо Вам Анна много полезной информации нашел в Вашем блоге. Анна не могли бы дать ссылку на статью или урок в котором разбирается тема(пока для меня сложная)Подключение к базе данных и вывод информации на определенную страницу по запросу пользователя. Я вроде всё у Вас перерыл не нашел или плохо искал,или нет такой статьи? Прошу прощение я пока не волшебник только учусь. HTML (статический)сайт получается создать ну вот как подключится и выводить(хранить)все в базе данных пока не получается.Не чего толкового в Рунете не нашел одна "вода". А вот изучать PHP с нуля пока времени не хватает. Кое что знаю ,но пока мало. Сегодня попал на Ваш сайт появилась "надежда" все толково у Вас респект. С уважением Илнур.

Комментарий добавил(а): Пирокар
Дата: 2015-08-13

Появилась сложная для меня задача. Имеем массив забитый различными значениями, строками, целыми числами, дробными числами, а скоро возможно и объектами пополнится. Теперь задача этот массив уметь сортировать, программка должна выдать возможные сортировки, строковые, целые, дробные и чётные и нечётные. Вопрос как вывести чётные и нечётные?. В дальнейшем сразу же будет с ними проводиться различные операции. Просто не допру, число в массиве не известно, ключ тоже. Просто находим число любое и как определить чётное оно или не чётные. Ещё бы что-бы код был поудобнее, без лишней переменной для проверки чётности например.

Комментарий добавил(а): аНДРЕЙ
Дата: 2015-11-09

Скажите, а как посчитать количество массивов в массиве Array ( [user] => [sub] => SEND [0] => Array ( [id_products] => 2 [quatity] => 10 ) [1] => Array ( [id_products] => 4 [quatity] => 11 ))

Комментарий добавил(а): Женька
Дата: 2016-03-03

Мне кажется не имеет смысла задавать вопросы, автор блога видимо и понятия не имеет о том что ей кто-то что-то задает!)

Добавить Комментарий:


Введите сумму чисел с картинки:

Почему стоит подписаться на обновления блога

Будьте в курсе новых публикаций на Блоге!

rss podpiska

Введите Ваш E-mail: