ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Сортировка, поиск и случайные числа. Часть Вторая.


18-05-2015

21.2. Встроенные функции сортировки
На практике создавать собственные функции сортировки не обязательно. PHP располагает несколькими функциями для решения задачи сортировки массивов. Самой типичной из них является функция sort (см. главу 11, "Данные"). Очень полезно будет сравнить на практике функции sort и rsort, asort и ksort.
Функция sort выстраивает все элементы массива в возрастающем порядке. Если массив содержит строку, это означает, что они будут отсортированы в соответствии с ASCII-кодами всех символов. Если массив содержит числа, он будет отсортирован по числовым значениям. Индексы - значения, используемые для ссылки на элементы, - замещаются целыми числами, начиная с нуля. Этот эффект продемонстрирован в листинге 21.1; на рис. 21.1 показан вывод, полученный с помощью этого сценария. Обратите внимание на то, что если для индексирования исходного массива использовались цифры и строки, после их сортировки все элементы будут пронумерованы от нуля до четырех. Таким образом, очищать индексы массива никогда не надо.
Другой момент в листинге 21.1 не срабатывает: это порядок выводимых значений - Apple, Blueberry, Watermelon, apple, pear. В словаре слово "apple" может упоминаться до или после слова "Apple", но ASCII-код буквы "A" равен 65, а ASCII-код буквы "a" - 97. ASCII-коды всех букв приведены в приложении Б, "ASCII-коды". Ниже в этой главе приводится алгоритм сортировки символической информации, которая не зависит от регистра. 
Листинг 21.1. Сортировка с помощью функции sort

<?php /*
** Заполним массив fruit различными случайными значениями */
$fruit[1] = "Apple"; $fruit[13] = "apple"; $fruit[64] = "Blueberry"; $fruit[3] = "pear"; $fruit["last"] = "Watermelon";
//отсортируем массив sort($fruit);
//выведем массив в отсортированном виде
print("<pre>");
print_r($fruit);
print("</pre>n");
?>
Сортировка, поиск и случайные числа
Функция rsort позволяет выполнить сортировку аналогично функции sort, но в обратном порядке. Внесем соответствующие коррективы в листинг 21.1 и заменим функцию sort функцией rsort.
Две другие функции сортировки, asort и arsort, работают немного не так: они сохраняют связи между индексом и элементом. Это очень удобно при работе с ассо­циативными массивами. Если массив проиндексирован числами, вероятно, необязательно сохранять их индексы, но, с другой стороны, а что если они сохранены? В листинге 21.2 продемонстрирован возможный сценарий, результат работы которого предоставлен на рис. 21.2.

| Листинг 21.2. Использование функции asort_
<?php
// Заполнить массив в порядке предпочтения $pasta = array(1=>"ravioli", "spaghetti", 
"vermicelli",
"lasagna",
"gnocchi",
"rigatoni"); // Отсортировать массив, сохраняя его индексы asort($pasta);
// Распечатать массив в алфавитном порядке
foreach($pasta as $rank=>$name)
{
print("$name имеет ранг $rank<br>n");
}
Сортировка, поиск и случайные числа
Сценарий в листинге 21.2 принимает все элементы в порядке, в котором они существуют в памяти. Они сохраняют свои первоначальные индексы, являющиеся числами, начиная с нуля. При использовании функции arsort получаем обратный порядок. Вероятно, что листинг 21.3 является примером наиболее типичного использования функций подобного рода. Необходимо хранить элементы в массиве, возвращаемом функцией getdate, в проиндексированном виде. В листинге 21.3 показано, что массив сортируется в обратном порядке по элементам. Практической ценности данный пример не имеет, но иллюстрирует использование этих функций. Результат работы сценария показан на рис. 21.3.

| Листинг 21.3. Использование функции arsort_
<?php
//получить массив от функции getdate $today = getdate();
// Отсортировать массив, сохраняя индексы arsort($today);
//Распечатать массив в порядке убывания
print("<pre>");
print_r($today);
print("</pre>n");
?>
Сортировка, поиск и случайные числа

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Сортировка, поиск и случайные числа PHP. Сортировка, поиск и случайные числа. Часть Третья.