PHP: Поиск в массиве
Поиск значения в массиве требуется практически в каждом PHP приложении, скрипте работающим с данными, для чего существует множество способов и специальных функций. В зависимости от задачи и типа поиска следует использовать те или иные инструменты, учитывая их особенности, скорость выполнения и удобство в применении. Далее мы ознакомимся с PHP функциями поиска элементов в массиве, возможными конструкциями и методами, а также выясним какой способ наиболее быстрый.
Функции для поиска в массиве:
array_search — служит для поиска значения в массиве. В случае удачи она возвращает ключ искомого значения, если ничего не найдено — возвращает FALSE. До версии PHP 4.2.0, array_search() при неудаче возвращала NULL, а не FALSE.
Синтаксис функции mixed array_search ( mixed needle, array haystack [, bool strict] ).
$array = array(12, 17, 22, 79); $key = array_search(17, $array, true); // $key = 1; $key = array_search("17", $array); // $key = 1; $key = array_search("17", $array, true); // FALSE; |
Если значение needle (то, что ищем в массиве), является строкой, то производится регистро-зависимое сравнение.
Если передать в функцию в качестве третьего параметра (это не обязательно) значение TRUE, то поиск будет производится с учетом типа переменной.
Стоит учитывать, если искомое значение встречается в массиве несколько раз, то функция вернет только один — первый найденный ключ.
in_array — Проверяет, присутствует ли в массиве значение, в случае успеха возвращает TRUE, неудачи FALSE. Как вы понимаете функция служит для поиска и определения наличия элемента в массиве, ключ на сам же элемент не возвращается.
Синтаксис функции bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
Функции для перебора элементов массива, с последующим поиском:
foreach — Перебирает элементы массива, работает только с массивами и объектами, в случае использования переменных отличного типа, PHP выдаст ошибку.
Возможны два вида синтаксиса (подробнее тут):
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
Пример использования функции с конструкцией foreach для поиска элемента массива, возвращает TRUE при успехе
function IsInArray($array , $findme) { foreach ($array as $c) { if (strpos(strtolower($c), strtolower($findme)) !== false ) return true; } return false; } |
Возвращает ключ элемента массива при успехе
function IsInArray($array , $findme) { foreach ($array as $key => $value) { if (strpos(strtolower($value), strtolower($findme)) !== false ) return $key; } return false; } |
while — цикл, с помощью которого также можно произвести поиск элемента в массиве. Подробнее о самой конструкции, тут.
Синтаксис конструкции
while (expr)
statement
Возвращает ключ элемента массива при успехе
function IsInArray($array , $findme) { // определяем длину массива $count=count($array); $j=0; // сам поиск while ($j<$count) { if ($array[$j]==$findme) // если нашли { return $array[$j]; break; } $j++; } } |
Из выше описанных примеров видно, что одни методы служат для поиска элемента в одномерных массивах, другие позволяют организовать поиск в многомерных массивах. Выбор метода зависит от типа обрабатываемых данных, будь то простой массив, или сложные многомерные деревья.
Далее произведем замер среднего времени выполнения функций поиска:
Число элементов массива | array_search | Цикл foreach | Цикл while |
10 | 0.0000068 | 0.0000064 | 0.0000076 |
100 | 0.0000078 | 0.0000153 | 0.0000185 |
1000 | 0.0000209 | 0.0001177 | 0.0001351 |
10000 | 0.0004210 | 0.0012128 | 0.0018670 |
100000 | 0.0039679 | 0.0130989 | 0.0175215 |
Из приведенной таблицы замеров видно, что функция array_search, показывает наилучший результат как при поиске в малых так и больших массивах. При этом время поиска спомощью циклов значительно увеличивается в зависимости от размера массива.
Похожие записи
Оставить комментарий
Full Stack
Senior, Architect
предложить оффер
- jQuery: как получить значение атрибута?
- PHP работа с изображением, класс SimpleImage
- Интеграция с API ОСАГО сайта sravni.ru
- Комментарии на PHP, Ajax, mySQL
- PHP: Категории бесконечного уровня вложенности.
- Nginx редирект на другой сервис с сохранением URL спросил (а) Сергей
- Исполнитель пропал, почему такое случается и понять с кем работать? спросил (а) Артем
- Можно ли WordPress считать универсальным движком? спросил (а) Андрей
- Что такое самописный скрипт или CMS? спросил (а) Антон
- Как при поиске в linux используя grep, добавить исключения? спросил (а) Алексей
- Обзор Insurance CMS — платформы для сайтов по страхованию к записи
- Консольный скрипт(JavaScript) для автоматических заказов на OZON к записи
- Консольный скрипт(JavaScript) для автоматических заказов на OZON к записи
- Как создать Telegram-бота с авторизацией через сайт к записи
- PHP скрипт: каталог закладок на сайты к записи
- Валидация на PHP к записи
- Сколько зарабатывают в бизнесе на совместных покупках к записи
Archive
- +2025 (24)
- Апрель 2025 (5)
- Март 2025 (4)
- Февраль 2025 (9)
- Январь 2025 (6)
- +2024 (35)
- Декабрь 2024 (7)
- Ноябрь 2024 (13)
- Октябрь 2024 (8)
- Сентябрь 2024 (1)
- Август 2024 (5)
- Май 2024 (1)
- +2023 (27)
- Ноябрь 2023 (1)
- Октябрь 2023 (13)
- Сентябрь 2023 (10)
- Апрель 2023 (1)
- Март 2023 (1)
- Февраль 2023 (1)
- +2022 (21)
- Декабрь 2022 (11)
- Ноябрь 2022 (1)
- Май 2022 (2)
- Апрель 2022 (2)
- Март 2022 (3)
- Февраль 2022 (1)
- Январь 2022 (1)
- +2021 (17)
- Декабрь 2021 (5)
- Ноябрь 2021 (2)
- Июль 2021 (1)
- Июнь 2021 (2)
- Май 2021 (5)
- Апрель 2021 (1)
- Март 2021 (1)
- +2020 (20)
- Декабрь 2020 (6)
- Сентябрь 2020 (2)
- Август 2020 (1)
- Июль 2020 (2)
- Май 2020 (2)
- Апрель 2020 (2)
- Март 2020 (2)
- Февраль 2020 (1)
- Январь 2020 (2)
- +2019 (18)
- Декабрь 2019 (3)
- Ноябрь 2019 (2)
- Октябрь 2019 (2)
- Сентябрь 2019 (1)
- Август 2019 (2)
- Июль 2019 (1)
- Июнь 2019 (1)
- Апрель 2019 (2)
- Март 2019 (1)
- Февраль 2019 (3)
- +2018 (44)
- Декабрь 2018 (4)
- Ноябрь 2018 (7)
- Октябрь 2018 (8)
- Сентябрь 2018 (1)
- Август 2018 (4)
- Июль 2018 (5)
- Май 2018 (3)
- Апрель 2018 (7)
- Март 2018 (1)
- Февраль 2018 (2)
- Январь 2018 (2)
- +2017 (19)
- Декабрь 2017 (2)
- Ноябрь 2017 (1)
- Октябрь 2017 (1)
- Сентябрь 2017 (2)
- Июль 2017 (1)
- Июнь 2017 (1)
- Май 2017 (2)
- Апрель 2017 (3)
- Март 2017 (2)
- Февраль 2017 (1)
- Январь 2017 (3)
- +2016 (36)
- Декабрь 2016 (3)
- Ноябрь 2016 (3)
- Октябрь 2016 (2)
- Сентябрь 2016 (3)
- Август 2016 (7)
- Июнь 2016 (3)
- Май 2016 (3)
- Апрель 2016 (3)
- Февраль 2016 (1)
- Январь 2016 (8)
- +2015 (36)
- Ноябрь 2015 (5)
- Октябрь 2015 (4)
- Сентябрь 2015 (1)
- Август 2015 (8)
- Июнь 2015 (1)
- Май 2015 (4)
- Апрель 2015 (8)
- Март 2015 (3)
- Февраль 2015 (2)
- +2014 (26)
- Ноябрь 2014 (2)
- Октябрь 2014 (5)
- Сентябрь 2014 (6)
- Июль 2014 (1)
- Июнь 2014 (2)
- Май 2014 (3)
- Апрель 2014 (6)
- Февраль 2014 (1)
- +2013 (27)
- Декабрь 2013 (2)
- Ноябрь 2013 (1)
- Октябрь 2013 (1)
- Август 2013 (1)
- Июль 2013 (3)
- Июнь 2013 (10)
- Май 2013 (1)
- Апрель 2013 (2)
- Февраль 2013 (3)
- Январь 2013 (3)
- +2012 (41)
- Декабрь 2012 (2)
- Ноябрь 2012 (3)
- Октябрь 2012 (7)
- Сентябрь 2012 (2)
- Август 2012 (1)
- Июль 2012 (3)
- Июнь 2012 (2)
- Май 2012 (6)
- Апрель 2012 (2)
- Март 2012 (7)
- Февраль 2012 (5)
- Январь 2012 (1)
- +2011 (57)
- Декабрь 2011 (6)
- Ноябрь 2011 (2)
- Октябрь 2011 (3)
- Сентябрь 2011 (5)
- Август 2011 (4)
- Июль 2011 (3)
- Июнь 2011 (3)
- Май 2011 (3)
- Апрель 2011 (4)
- Март 2011 (10)
- Февраль 2011 (5)
- Январь 2011 (9)
- +2010 (43)
- Декабрь 2010 (7)
- Ноябрь 2010 (21)
- Октябрь 2010 (14)
- Сентябрь 2010 (1)
Свежие записи
- Проверка CORS онлайн 04.04.2025
- Декодер JWT онлайн 03.04.2025
- Конвертер RGB в HEX (и обратно) онлайн 02.04.2025
- Конвертер Markdown в HTML онлайн 02.04.2025
- Создание сертификата Let’s Encrypt для домена и всех поддоменов 01.04.2025