<?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] это второй элемент массива.
array[0]=>"Лермонтов"
array[1]=>1840
поэтому $a[1] это второй элемент массива.