Каталог статей
Поиск по базе статей  
Статья на тему Интернет » Интересное в сети » Секреты PHP-функций для работы с&nb p;массивами. Обработка данных и&nb p;сортировка

 

Секреты PHP-функций для работы с&nb p;массивами. Обработка данных и&nb p;сортировка

 

 

Итак, что же там с вашим менеджером, который был упомянут в анонсе статьи? Вы уже написали ту самую злополучную версию функции для перекодировки какого-то поля в XML-файле. Но вечером того же дня оказывается, что надо срочно поменять логику работы скрипта, который уже закачан на сервер, протестирован вашим инженерным составом и одобрен чуть ли не самим генеральным директором фирмы. В противном случае вся торговая деятельность вашего предприятия может быть просто парализована (случай из жизни одного знакомого администратора). В таком случае, если вам пришлось написать приложение на каком-то IDE вроде Delphi или Clarion, остается только собраться и приехать в офис, чтобы внести необходимые изменения.

загрузка...

 

 

Зачем ехать, спросите вы? Все очень просто — начальник отдела безопасности категорически запретил выносить данные, и вы просто выполнили его очередной приказ. Для получения полной картины произошедшего представьте себе написанный на PHP сценарий разбора этого самого XML-файла. Вы просто упрашиваете вашего дежурного администратора отрыть доступ (по SSH, например, или с помощью того же MS-RDP) к вашему скрипту. В случае если у вас UNIX-сервер, то просто достаточно внести изменения и проверить работоспособность вашего приложения «не выходя с сервера». Конечно, может показаться, что приведенный выше пример слегка притянут за уши и не может никогда приключиться с вами. Но все же можно представить, насколько проще станет оперативно получать доступ к подконтрольным задачам (например, из другой страны или в дороге), если вы пользуетесь PHP, а не более «тяжелыми» средствами.

Зачем это надо

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

Классификация типов функций для работы с массивами

Итак, приведу свою классификацию (за неимением стандартной) типов функций PHP, которые предназначены для сортировки и обработки данных, содержащихся в массивах.

  • Информационные функции. Например, получение количества элементов.
  • Преобразование различных типов данных в массивы и наоборот. Этот тип функций позволяет, например, перейти от строкового представления к массиву значений.
  • Методы, предназначенные для слияния и разбиения массивов.
  • Сортировка данных. Функции для сортировки позволяют выполнять манипулирование вашими массивами, как ассоциативного типа, так и с обычным, последовательным, ключом.
  • Обработка (групповая) данных. Функции типа callback, которые входят в этот тип, дают вам возможность применить написанную вами функцию к выбранным элементам массива (или ко всем последовательно) одной операцией.
  • Заполнение данными — инициализация массивов. В PHP нет такого понятия, как указание первоначальной размерности массива. Это, с одной стороны, позволяет серьезно экономить память, выделяемую при обработке скрипта на PHP, но с другой — может привести к блокировке его работы при превышении выделенным объемом памяти какого-либо граничного значения. Для начальной инициализации данными в состав языка включено сразу несколько необходимых функций.
  • Функции для перемещения по (внутреннему) индексу массива.

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

Информационные функции. Получение характеристик массива

Для обеспечения нужного уровня безопасности вашего приложения иногда бывает нужно проверять передаваемые в ваши процедуры значения. Также часто для последовательного перебора значений массива может понадобиться узнать его размер. В таком случае при написании необходимой программы вам просто не обойтись без группы функций, которые предоставляют характеристики массивов:

  • is_array — эта функция проверяет, действительно ли переданное значение является массивом;
  • array_key_exists — проверка наличия ключа ассоциативного массива;
  • array_keys — получение массива с ключами. Эта функция позволяет перебрать все элементы ассоциативного массива, у которого в качестве ключа используется непоследовательный числовой ряд;
  • count (или sizeof) — получение количества элементов массива;
  • in_array — проверка, есть ли в указанном массиве нужное вам значение (которое, в свою очередь, также может быть массивом);
  • array_count_values — подсчет значений массива ("свертка по значению"). Возвращает ассоциативный массив, в качестве ключа которого используются значения из переданного параметра. В качестве значений результата выполнения функции будет число найденных таких значений. Удобно для подсчета в финансовых функциях.

Демонстрация работы функции array_keys, возвращающей список ключей

Преобразование данных

Несмотря на то что многие функции не относятся к группе, которая предназначена именно для оперирования массивами, с их помощью можно выполнять различные операции вроде конвертации периодических данных в табличное представление. Например, такие функции, как preg_match (операция сравнения с регулярным выражением), позволяют получить массив из строкового представления. При программировании нетривиальных задач следует помнить про особенность языка PHP, состоящую в очень большой функциональной наполненности и массе предоставляемых пользователю возможностей, и пользоваться самой последней версией документации. Итак, какие функции могут вам пригодиться для преобразования данных в массивы и наоборот:

  • explode — преобразование строки в массив. При этом вы можете преобразовать в массив, например, CSV-строку (данные, разделенные точкой с запятой);
  • implode (join) — «склеивание» элементов массива в строку. Используя эту функцию в комплексе с file, можно преобразовать содержимое файла в строку. Join — это полный синоним функции implode;
  • split, preg_split — разбиение строки по регулярному выражению*. Эти функции позволяют преобразовать нетривиально представленные данные в массив. Например, можно конвертировать в табличное представление строковое выражение, не разделенное никакими специальными символами. В общем случае вторая функция работает несколько быстрее первой (по крайней мере, так утверждает документация по PHP);
  • array_combine — преобразование двух простых массивов в один ассоциативный, используя значения первого в качестве ключей для него, а соответствующие значения второго в качестве наполнителя значений итогового массива.

Убираем из строки все лишние разделители типа точки и нескольких пробелов подряд

Слияние, разбиение, сравнение

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

  • array_merge_recursive — рекурсивное слияние нескольких массивов;
  • array_merge — объединение нескольких массивов;
  • array_chunk — разбиение массива на части;
  • array_diff — простой анализ расхождений массивов;
  • array_diff_assoc, array_diff_key, array_diff_uassoc, array_diff_ukey — функции для сравнения массивов. Первая позволяет вычислить расхождения с проверкой индекса, вторая позволяет выполнить анализ по ключу, а третья и четвертая используют вызов определяемой пользователем функции для анализа расхождений значений и ключей массива. Эти функции позволяют, к примеру, провести семантический анализ вводимых данных путем вычленения неверно набранных символов или слов из набираемой фразы на основе пользовательского словаря;
  • array_intersect_* — группа функций, выполняющих операцию пересечения матричных данных. Позволяет, например, проводить операции анализа статистических данных.

Обработка данных

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

  • array_change_key_case — преобразование регистра символов ключей массива. По умолчанию ключи преобразуются в нижний регистр. Но если в качестве второго параметра для этой функции указать 1, то вы получите массив с ключами в верхнем регистре. Корректно обрабатываются и строки, набранные в кириллице;
  • array_multisort — сортировка нескольких массивов одновременно. Позволяет также обрабатывать многомерные массивы;
  • array_slice — получение среза массива;
  • array_flip — обмен значений местами;
  • array_map — применение пользовательской функции ко всем элементам массива. Так, например, можно убрать лишние пробелы из массива текста, каждая строка которого представляет собой строку текста (результат работы функции file);
  • array_splice — замена определенных элементов массива другими значениями;
  • array_unique — удаление повторяющихся значений.

Заполнение

Для операций вроде заполнения массива списком значений можно, конечно, использовать цикл for и в его теле выполнить нужные операции. Однако для облегчения вашего кода специально для таких рутинных задач PHP предлагает целый ряд возможностей. Приведу лишь краткий список функций, который не претендует на законченность, но даст вам представление про всю мощь этого механизма:

  • array_pad — увеличение размера массива до указанной величины. Функция может быть чрезвычайно полезна при тестировании выделения памяти вашему скрипту;
  • range — заполнение массива диапазоном значений. Вы можете присвоить первому элементу массива значение 1, второму — 2 и так далее;
  • list — эта синтаксическая конструкция языка PHP позволяет присвоить списку переменных значения в одной операции.

«Расширение» массива путем добавления указанного значения до достижения массивом нужной размерности

Сортировка массивов

Функции, непосредственно сортирующие значения, позволяют провести сортировку как по значениям, так и по ключевому полю. Причем существуют функции, которые выполняют прямую и обратную (по убыванию значений) сортировку. Само собой разумеется, что при использовании кириллицы сортировка выполняется с учетом выбранного языка. Итак, вот основные функции, которые позволяют упорядочить ваши данные:

  • sort (rsort) — сортировка массива (rsort — обратный порядок сортировки);
  • ksort (krsort) — сортировка массива по ключам (krsort выполняет то же, только в обратном порядке);
  • asort (arsort) — сортировка массива по значениям (без сохранения ассоциативности массива);
  • array_multisort — сортировка нескольких массивов (можно также обработать и многомерные табличные данные);
  • uasort, uksort, usort — сортировка массива с использованием пользовательской функции. В первой функции сортировка идет по значениям с сохранением ключей, во второй используются ключи, а третья использует функцию пользователя для сравнения значения;
  • shuffle — перемешивание данных в массиве.

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

Сортировка массива

Навигация и доступ к данным массива

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

  • pos (или current) — получение текущего положения указателя;
  • reset — установка указателя на первый элемент массива;
  • end — установка указателя на последний элемент массива;
  • prev — установка указателя на предыдущее значение;
  • next — установка указателя на следующее значение;
  • each — получение ключа и значения из ассоциативного массива и сдвиг его указателя «вниз».

Выводы

Нередко для выполнения какой-то рутинной функции вы пробуете найти специальную программу. Но зачастую бывает значительно быстрей самому написать небольшой скрипт на PHP, который выполнит несложную обработку данных. Массивы являются одним из самых мощных механизмов языка PHP. И даже несмотря на то, что для обработки данных более подходят базы данных SQL, знание принципов работы массивов не помешает. Тем более во встроенной в PHP функциональности скрываются большие потенциальные возможности для ускорения работы веб-приложений и системных скриптов.

Ссылки по теме




Статья получена: hostinfo.ru
загрузка...

 

 

Наверх


Постоянная ссылка на статью "Секреты PHP-функций для работы с&nb p;массивами. Обработка данных и&nb p;сортировка":


Рассказать другу

Оценка: 4.0 (голосов: 16)

Ваша оценка:

Ваш комментарий

Имя:
Сообщение:
Защитный код: включите графику
 
 



Поиск по базе статей:





Темы статей






Новые статьи

Противовирусные препараты: за и против Добро пожаловать в Армению. Знакомство с Арменией Крыша из сэндвич панелей для индивидуального строительства Возможно ли отменить договор купли-продажи квартиры, если он был уже подписан Как выбрать блеск для губ Чего боятся мужчины Как побороть страх перед неизвестностью Газон на участке своими руками Как правильно стирать шторы Как просто бросить курить

Вместе с этой статьей обычно читают:

Яндекс и Google для работы, Рамблер по привычке, Yahoo для беклинков

В сентябре редакцией SEOnews было проведено социологическое исследование на тему «Приоритеты SEO-специалистов при выборе поисковиков». Отправной точкой в проведении данного исследования послужили результаты опроса компании Nielsen/NetRatings, выяснявшей, сколькими и какими поисковиками пользуется англоязычная аудитория. Цель нашего исследования - выяснение, какими поисковыми системами и почему предпочитают пользоваться русскоязычные SEO-специалисты.

» Продвижение и оптимизация - 2493 - читать


Как настроить почтовый клиент для работы с&nb p;GMail

Проблема в том, что обычные параметры настройки почтового клиента не совсем то, что нужно для работы с GMail. Однако для нас не важно, почему так сделано у них, а важно, что надо сделать у нас, чтобы все заработало. В принципе основных отличий в настройке только две: первая — в настройке протокола POP для приема почты, вторая — в настройке протокола SMTP для отправки почты.

» Интересное в сети - 2776 - читать


Секреты PHP-функций для работы с&nb p;массивами. Создание массивов

Основное назначение массивов — быстрая обработка данных. Часто разработчики программного обеспечения выполняют с их помощью сортирование информации, манипулирование исходными данными и получение различных выборок из наборов данных. Бытует мнение, что функциональность массивов гораздо проще организовать с помощью применения «толстой» прослойки SQL-кода и обращения к внешним приложениям типа специализированных хранилищ данных.

» Интересное в сети - 2057 - читать


Медикаменты, необходимые для работы в перевязочной

В перевязочной должен быть большой выбор антисептиков и других медикаментов. Борная кислота. Используют 2-4%-ный раствор для промывания ран.

» Физиотерапия - 3408 - читать


Аналитики продают «Вимм-Билль-Данн. Для работы на Западе ему придётся войти в альянс с крупной компанией

UBS обнародовал перечень компаний, которые могут быть проданы в следующем году. По прогнозам экспертов швейцарского инвестиционного банка, потенциальный объект поглощения в России — это ОАО « Вимм-Билль-Данн».

» Управление и менеджмент - 1908 - читать



Статья на тему Интернет » Интересное в сети » Секреты PHP-функций для работы с&nb p;массивами. Обработка данных и&nb p;сортировка

Все статьи | Разделы | Поиск | Добавить статью | Контакты

© Art.Thelib.Ru, 2006-2024, при копировании материалов, прямая индексируемая ссылка на сайт обязательна.

Энциклопедия Art.Thelib.Ru