[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: usort
slava007
Господа программеры, объясните пожалуйста как работает функция usort. например:
<?php
$books=array(
"Герой нашего времени"=>array ("Лермонтов", 1840), // это все,
"Руслан и Людмила"=>array("Пушкин",1820), // как я понимаю
"Война и мир"=>array ("Толстой",1863), // двухмерный
"Идиот" => array("Достоевский",1868)); // массив

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;
}
?>
Непонятна работа самой функции, зачем переменные $a и $b какую роль они выполняют. Если кому не сложно, объясните пожалуйста на пальцах. Заранее спасибо.



Спустя 9 минут, 7 секунд (10.02.2011 - 07:15) Invis1ble написал(а):
Переменные $a и $b - это элементы массива, который сортируется. В данном случае - $a[1], $b[1] - годы. Они сравниваются и на основании этого сравнения callback-функция cmp возвращает число (-1, 1 или 0). На основании полученного числа идет сортировка.

Спустя 2 минуты, 55 секунд (10.02.2011 - 07:18) Invis1ble написал(а):
Цитата
//это, как я понимаю двухмерный массив

совершенно верно

Спустя 7 минут, 46 секунд (10.02.2011 - 07:25) slava007 написал(а):
Цитата (Invis1ble @ 10.02.2011 - 04:15)
Переменные $a и $b - это элементы массива, который сортируется. В данном случае - $a[1], $b[1] - годы.

тогда получается "Лермонтов","Пушкин","Толстой" и "Достоевский" это ключи?
$a и $b это минимальное и максимальное значение переменных?

Спустя 10 минут, 41 секунда (10.02.2011 - 07:36) Invis1ble написал(а):
slava007
Цитата
тогда получается "Лермонтов","Пушкин","Толстой" и "Достоевский" это ключи?

нет, это значения
Цитата
$a и $b это минимальное и максимальное значение переменных?

нет. Это последовательно берутся элементы массива $books, т.е. тоже массивы, а в cmp берутся из полученных значений вторые по счеты элементы ($a[1], $b[1]), т.е. годы

Спустя 5 минут, 21 секунда (10.02.2011 - 07:41) slava007 написал(а):
тоесть получается:
array[0]=>"Лермонтов"
array[1]=>1840
поэтому $a[1] это второй элемент массива.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.