Сортировка с помощью функции, заданной пользователем

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. Оформите отчет по работе. Отчет должен содержать: номер работы, тему, цель, задание, код и отображение созданных документов в окне браузера, ответы на контрольные вопросы.

Вопросы для контроля

  1. Дайте определение массивам в PHP?
  2. Какие функции позволяют выполнять сортировку массива? Дайте их краткую характеристику.
  3. Для чего используется встроенная функция unset()?
  4. Проанализируйте следующий 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 с.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: