Лабиринты программирования или PHP поиск по массивам

PHP поиск по массивам

От автора: осень, зима, вот и потянуло меня на лирику да романтику. Вы думаете, программирование совсем не романтическое ремесло? Ошибаетесь! Взять хотя бы массивы. Их ветвление очень похожи на повороты лабиринтов, в которых незнающий человек может застрять навеки! Сегодня мы узнаем, как происходит в PHP поиск по массивам.

Массивы бывают разные…

Надеюсь, с массивами вы немного знакомы. Хотя не факт, поэтому пару «зарисовок» на тему :). Массивы бывают:

Простые – состоят из пары «ключ-значение», где в качестве ключа выступает значение индекса. Любой нумерованный список можно рассматривать как простой массив, в котором номер строки является индексом, а его содержание — значением.

Ассоциативные – в них ключами могут выступать не только числа, но и строки. Чаще всего ключ и значение логически (ассоциативно) связаны между собой. Пример такого массива я пока не придумал :).

Также массивы могут быть:

Одномерными – используется один индекс.

Многомерными – используется два и более индексов.

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

Спасибо функциям!

Большая и огромная человеческая благодарность всем функциям PHP, которые облегчают работу с массивами! Если бы их не было (функций), то сортировка данных превратилась бы в настоящую «пытку» головного мозга!

Ну, может я и приврал чуток :). Но объем кода без применения этих функций точно бы возрос в разы. Опять не верите? Тогда давайте докажу на примере.

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

PHP поиск по массивам

Получается, чтобы поймать Вольдемарыча, нам потребовалось запустить 10 строк кода. Теперь попробуем сделать то же самое с помощью функции array_search(). В качестве аргументов она принимает значение элемента и сам массив, а возвращает индекс (ключ) искомого. В нашем случае она возвратит ключ элемента с содержимым «Вольдемарыч».

Вот результат PHP поиска в массиве по значению:

PHP поиск по массивам

Но почему функция вернула единицу, если Вольдемарыч у нас проходит «по списку» под номером два? Забыл сказать, что индексация массивов начинается не с 1, а с 0. Значит все верно.

«Многомерим» наш массив

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

Чтобы было понятнее, я предлагаю вспомнить о типах взаимосвязи между таблицами в одной базе данных. Например, существует таблица, в которую заносятся ФИО рабочих предприятия. При этом некоторые ее столбцы взаимосвязаны с другой таблицей, где фиксируется посещаемость (рабочий табель). А с этой таблицей может быть связана другая, куда (на основе табеля) вычисляется и заносятся сроки следующего (ежегодного) отпуска… То есть один элемент идентифицируется не по одному ключу, а по нескольким.

Получается, что PHP поиск в многомерном массиве осуществляется по двум и более индексам. Чтобы продемонстрировать это, нам придется немного подправить существующий вариант «структуры».

Теперь посмотрим, как происходит PHP поиск ключа в многомерном массиве. Для этого нам пригодится предыдущая функция:

Но иногда при поиске значения в многомерном массиве PHP нужно узнать, есть такой элемента или нет. Для этого понадобится другая функция — in_array(). Она также в качестве параметров принимает значение элемента и массив, но возвращает значение типа bool.

PHP поиск по массивам

Двое из ларца…

Поиск совпадений в массиве PHP – тоже вещь нужная! Но для ее реализации придется создавать собственное решение, а не надеяться на возможности языка. С многомерностью на сегодня покончено. Для демонстрации следующего примера возвращаемся к первоначальному варианту массива.

PHP поиск по массивам

С помощью этого примера мы провели поиск количества одинаковых значений в массиве PHP. Для этого в цикле if мы сравнивали значения всех элементов с заданным. Оказалось, что Вольдемарыч встречается в массиве два раза. Сегодня нам снова удалось не заплутать в дебрях PHP и узнать много нового. Например, кто такой Вольдемарыч :).

Метки:

Похожие статьи:

Комментарии Вконтакте: