usort (массив, сортирующая функция); -сортирует значения элементов массива с помощью определенной пользователем функции.
uksort (массив, сортирующая функция); -сортирует значения ключей массива с помощью определенной пользователем функции.
Обе функции возвращают true, если сортировка прошла успешно, и false – в противном случае.
Пользовательсккая функция должна удовлетворять определенным критериям, позволяющим сравнивать элементы массива. Во-первых, она должна иметь два аргумента. В них интерпретатор будет передавать пары значений элементов для функции usort() или ключей массива для функции uksort(). Во-вторых, сортирующая функция должна возвращать:
· целое число, меньшее нуля, если первый аргумент меньше второго;
· число, равное нулю, если два аргумента равны;
· число большее нуля, если первый аргумент больше второго.
Для функции usort() существует аналог, не изменяющий значения ключей, – функция uasort().
Пример 6. Создадим массив, содержащий такие сведения о литературных произведениях, как название, автор и год создания. Упорядочим книги по дате создания.
|
|
<?php
$books = array(
"Герой нашего времени" => array ("Лермонтов", 1840),
"Руслан и Людмила" => array("Пушкин",1820),
"Война и мир" => array ("Толстой",1863));
uasort($books, "cmp"); // сортируем массив с помощью функции cmp
foreach ($books as $key => $book) echo "$book[0]: \"$key\"<br>";
// функция, определяющая способ сортировки
function cmp($a, $b)
{
if ($a[1] < $b[1]) return -1;
elseif ($a[1]==$b[1]) return 0;
else return 1;
}
?>
Практическая часть
1. Изучите теоретическую часть.
2. Выполните анализ примеров кода скриптов, представленных в теоретической части. Ознакомьтесь с их работой.
3. Создать массив целых чисел, состоящий из десяти элементов. Вывести индексы тех его элементов, которые делятся на 5 без остатка.
4. Создайте массив, аналогичный телефонному справочнику. Отсортируйте массив по фамилиям абонентов в алфавитном порядке. Выведите результат.
5. Создайте многомерный массив, в котором вложенные массивы будут соответствовать разным жанрам («комедия», «мелодрама», «детектив» и др.), а элементами этих массивов будут названия фильмов. Просмотрите массив в цикле, выводя название жанра и связанные с ним фильмы.
6. Оформите отчет по работе. Отчет должен содержать: номер работы, тему, цель, задание, код и отображение созданных документов в окне браузера, ответы на контрольные вопросы.
Вопросы для контроля
- Дайте определение массивам в PHP?
- Какие функции позволяют выполнять сортировку массива? Дайте их краткую характеристику.
- Для чего используется встроенная функция unset()?
- Проанализируйте следующий PHP код:
<?php
$a = array('cat','dog','fox');
$b = array('Moscow','London');
$c = array('RED');
$d = $b + $a + $c;
?>
Что окажется в массиве $d? Поясните почему?
Литература
1. Котеров Д.В. Самоучитель РНР 4. - СПб.: БХВ – Петербург, 2004. – 576с.
2. Cтpoганов А. С. Ваш первый сайт с использованием РНР - скриптов. - М.: Издательство Диалог-МИФИ, 2008. - 288 с.