Функция in_array
Функция in_array проверяет наличие заданного элемента в массиве. Первым параметром она принимает что искать, а вторым — в каком массиве.
Синтаксис
in_array(что искать, в каком массиве);
Пример
Давайте проверим, есть ли в массиве $arr элемент со значением 3 :
Результат выполнения кода:
Смотрите также
- функцию array_key_exists ,
которая проверяет наличие указанного ключа в массиве
array_key_exists
Функция array_key_exists() возвращает true , если в массиве присутствует указанный ключ key . Параметр key может быть любым значением, которое подходит для индекса массива.
Список параметров
Массив с проверяемыми ключами.
Возвращаемые значения
Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.
Замечание:
array_key_exists() ищет ключи только на первом уровне массива. Внутренние ключи в многомерных массивах найдены не будут.
Примеры
Пример #1 Пример использования array_key_exists()
$search_array = array( ‘first’ => 1 , ‘second’ => 4 );
if ( array_key_exists ( ‘first’ , $search_array )) echo «Массив содержит элемент ‘first’.» ;
>
?>?php
Пример #2 array_key_exists() и isset()
isset() не возвращает true для ключей массива, указывающих на null , а array_key_exists() возвращает.
$search_array = array( ‘first’ => null , ‘second’ => 4 );
?php
// возвращает false
isset( $search_array [ ‘first’ ]);
// возвращает true
array_key_exists ( ‘first’ , $search_array );
?>
Примечания
Замечание:
По причинам обратной совместимости, array_key_exists() возвращает true , если key является свойством объекта ( object ), переданным в качестве параметра array . Поведение устарело в PHP 7.4.0 и удалено в PHP 8.0.0.
Чтобы проверить, содержит ли объект какое-либо свойство, используйте функцию property_exists() .
Смотрите также
- isset() — Определяет, была ли установлена переменная значением, отличным от null
- array_keys() — Возвращает все или некоторое подмножество ключей массива
- in_array() — Проверяет, присутствует ли в массиве значение
- property_exists() — Проверяет, содержит ли объект или класс указанный атрибут
Проверка существования значения — PHP: Массивы
При работе с массивами часто допускается ошибка, называемая «выход за границу массива». Она заключается в том, что из массива извлекается элемент по несуществующему индексу:
$animals = ['cats', 'dogs', 'birds']; $animals[5]; // null
В разных языках программирования поведение в случае выхода за границу реализовано совершенно по-разному. Иногда возникает ошибка, иногда возвращается undefined , как в JavaScript, а иногда подобный выход возвращает случайные данные из соседнего блока памяти, как в Си, что может привести к катастрофе.
В PHP свой путь. С одной стороны такой вызов вернёт null , с другой — возникнет Warning с примерно таким сообщением: «Warning: Undefined array key 5. В общем случае, правильно всегда проверять доступность индекса и никогда не обращаться к массиву за его границами. Это безопасная стратегия, и вам будет проще адаптироваться к новым языкам, используя это универсальное решение.
Проверку наличия индекса в массиве можно сделать с помощью функции array_key_exists , которая первым параметром принимает индекс, а вторым массив для поиска.
$ages = [3, 2]; if (array_key_exists(3, $ages)) print_r('yeah!'); > else print_r('no'); > // => no
Вместо array_key_exists() иногда используют функцию isset() . Она имеет ровно одно отличие в поведении, которое нужно учитывать. Если значение по индексу существует, но его значение равно null , то isset() вернёт false , а array_key_exists() — true . То есть isset() это операция, похожая на проверку наличия значения по индексу, но все же у нее другой смысл. Поэтому в большинстве случаев стоит предпочитать array_key_exists() как наиболее соответствующую смыслу.
$ages = [3, 2]; // isset принимает на вход массив, так как он используется, с подставленным индексом if (isset($ages[3])) print_r('yeah!'); > else print_r('no'); > // => no
Оператор объединения с null
С седьмой версии PHP в качестве синтаксического сахара к isset() появился специальный оператор ?? . Он позволяет упростить проверку на существование, в том случае, когда нам нужно значение по умолчанию:
$age = $ages[3] ?? 5; // 5 - значение по умолчанию
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Как проверить наличие значения в массиве php
Зачастую при написании кода необходимо проверить существует ли то или иное значение элемента в массиве. Сегодня мы рассмотрим несколько функций, при помощи которых это можно сделать.
Проверка наличия значения элемента в массиве может применяться при решении различных задач в программировании.
Мы можем получать различные массивы из нашей базы данных и проверять наличие того или иного значения в нем. Искомое значение может передаваться и от пользователя нашего скрипта, когда он, например, что-то ищет. По результатам такого поиска можно совершать определенные действия. Все зависит от конкретно поставленной задачи, однако, алгоритмы поиска значения в массиве будут одними и теми же.
Сегодня мы их рассмотрим.
Проверка наличия значения в массиве. Функция in_array()
Функция in_array() позволит нам проверить наличие какого-либо значения в массиве.
Если результат ее работы удачный и искомый элемент в массиве найден, то функция вернет true, то есть «правду».
Функция принимает 2 обязательных параметра: и .
Также она может принимать еще один необязательный параметр: . Если этот третий необязательный параметр имеет значение true, тогда проверяется еще и тип данных. То есть ‘2’ и 2 будет не одно и то же. В первом случае – это строка, во втором – число. И тогда уже вся функция in_array() не вернет значение true.
Также нужно помнить, что функция осуществляет сравнение с учетом регистра символов.
Давайте рассмотрим работу этой функции на простом примере.
Нам нужен какой-нибудь массив. При помощи функции проверим наличие значения в массиве и выведем на экран определенное сообщение.
Отработав функция выведет на экран сообщение «Yes», так как элемент «Marina» в нашем массиве присутствует.
Поменяйте первый параметр в функции на какой-либо несуществующий элемент, и Вы увидите сообщение «No».
Проверка наличия значения в массиве. Функция array_search()
Существует и еще одна функция для поиска array_search(), которая в отличие от предыдущей будет возвращать ключ найденного элемента. Это в свою очередь может пригодиться, если мы работаем с ассоциативным массивом.
Функция принимает те же параметры, что и предыдущая. При этом третий параметр также является необязательным.
Давайте посмотрим, как ее можно использовать, работая с ассоциативным массивом.
'october','money'=>200,'name'=>'Mila'); $key = array_search('Mila',$Mass1); if($key) echo $key; ?>
В данном случае мы увидим на экране «name», то есть ключ от искомого элемента со значением «Mila».
Эти две функции очень похожи и по сути отличаются только возвращаемым значением.
Поиск значения в многомерном массиве
А что делать, если мы работаем с многомерным массивом? Ведь его элементами будут другие массивы.
Здесь уже рассмотренные нами алгоритмы не сработают.
На самом деле все не так уж и сложно, просто нужно немного усложнить весь механизм и использовать цикл, например, foreach(), который прекрасно работает с массивами.
Допустим у нас есть многомерный массив. Его непосредственными значениями являются другие массивы, в которых может содержаться искомое значение элемента.
Все, что требуется сделать – это перебрать элементы первоначального массива в цикле foreach(). Каждый элемент этого массива будет разобран на ключ ($key) и значение ($value).
Значением будет являться каждый из массивов, находящийся внутри основного многомерного массива. Вот с этими значениями мы и будем работать, ища в каждом внутреннем массиве искомое значение элемента.
При нахождении мы выведем на экран сообщение о том, что такой элемент существует, а если нет, то выведем другое сообщение, что такого элемента нет.
Давайте посмотрим все это на примере кода:
'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!».
Конечно же, при нахождении или не нахождении определенного элемента мы можем не просто выводить сообщения, а делать какие-либо другие действия. Все зависит от того, что Вам нужно сделать. Например, при наличии искомого значения в массиве, Вы можете отдавать пользователю какую-то конкретную информацию и т.д.
Вот и все на сегодня! Надеюсь, урок был понятен и полезен! Попробуйте сами написать подобный код, чтобы разобраться во всем окончательно.
А я жду Ваших комментариев.
Делитесь уроком со своими друзьями при помощи кнопок соц. сетей, расположенных ниже. А также подписывайтесь на обновления блога. Мы уже собрали достаточно неплохой архив полезных материалов, и они будут только пополняться!
Желаю Вам успешного программирования!
С Вами была Анна Котельникова!
