Использование массива как поисковой таблицы

Теперь, когда вы имеет представление о том, как использовать массивы для организации простой таблицы, а также о том, как спроектировать таблицы массивов для обеспечения максимальной гибкости при работе с сортировкой, рассмотрим другой тип таблиц — поисковые таблицы (lookup tables). В отличие от описанных выше таблиц, поисковая таблица не предназначена для отображения пользователю. Вместо этого ее можно описать как таблицу ссылок, создаваемую и используемую РНР-сценарием для повышения эффективности или упрощения задачи. В настоящем разделе рассматривается простое приложение поисковой таблицы. В частности, будет показано, как реализовать поисковую таблицу для вывода криптограмм.
Небольшое пояснение для тех, кто не знаком с криптограммами: для заданной строки необходимо заменить каждую букву (например, “А”) другой буквой. Задача состоит с том, чтобы расшифровать закодированное сообщение. Несмотря на то что существует множество способов реализации сценария генерации криптограмм, мы попытаемся сделать это с помощью набора функций дтя работы с массивами, начиная с range ().
В РНР функция ranged применяется для создания массивов, которые содержат заданный диапазон чисел или букв. Синтаксис этой функции выглядит так:
range(mixed Slow, mixed Shigh)Slow представляет начало диапазона, a Shigh — конец. Как уже было сказано, параметры могут быть числами (например, от 1 до 10), или буквами (например, от d до w). Функция rand () вернет индексированный целыми ключами массив, содержащий все цифры или буквы от Slow до Shigh. Эта функция будет использоваться далее для создания массива, содержащего все буквы алфавита, а также буквы, используемые для кодирования криптограммы.
Вторая функция, которую нужно представить — это функция, которая будет отвечать за определение того, как буквы закодированы в финальной криптограмме, а именно — shuffle (), Эта функция подобна рассмотренной ранее array^rand (), но с одним существенным отличием. Вместо создания нового массива случайным образом на базе другого существующего массива, функция shuffled перетасовывает случайным образом содержимое массива. Ниже показан очень простой синтаксис shuffle ().
shuffle(Sinput)
Еще одной функцией, которая понадобится для целей этого примера, будет та, которая меняет местами пары ключ/значение (так, что ключи становятся значениями, а значения — ключами) — функция array_f lip (), также имеющая простой синтаксис:
array_flip(Sinput)
Sinput представляет массив, для которого надо поменять местами ключи и значения, и в результате вызова функция возвращает новый массив.
И, наконец, рассмотрим нашу первую функцию поиска в PHP-массиве — inarray (). Эта функция принимает два параметра (искомое значение и массив, в котором нужно искать) и возвращает булевское значение, означающее успешность или неудачу поиска конкретного значения. Ниже показан синтаксис функции in_array (}.
in_array(Sneedle, Shaystack [, Sstrict])
Обратите внимание, что функция in_array() также принимает необязательный третий параметр — Sstrict. Это необязательное логическое значение (по умолчанию равное false) определяет, должно ли искомое значение Sneedle совпадать с элементом массива Shaystack не только по значению, но и по типу. То есть, в массиве, содержащем строковое значение ‘ 10 ‘, поиск целого числа 10 вернет true. Однако если установить значение параметра Sstrict равным true, та же операция вернет false.
Теперь, когда вы познакомились с новыми функциями, которые будут использоваться в данном примере, рассмотрим первую часть сценария генерации криптограмм, которая показана в листинге 2.17.

Tags: , ,

Related posts


Leave a Reply


Заказ грузовых машин. Грузчики - заказ грузчиков. Грузчики от 150 руб. час.