Задание по сортировке массива. Не вникну никак... Об"ясните.

Globus51

Новичок
Задание по сортировке массива. Не вникну никак... Об"ясните.

Задание по сортировке массива. Не вникну никак в суть того как вообще здесь сортировка происходит при работе функции.
Об"ясните...

.......................................


Дан массив $a = array("second","third","first"); Отсортировать значения элементов массива так, чтобы элемент third был первым, second – вторым, first – третьим.

<?
$a = array ("second","third","first");
usort ($a,"tes");
function tes ($c, $d) {
if ($c == "third" && $d == "second") return -1;
if ($c == "third" && $d == "first") return -1;
if ($c == "first" && $d == "second") return 1;
if ($c == "second" && $d == "third") return 1;
if ($c == "first" && $d == "third") return 1;
}
print_r ($a);
?>
 

Crys

Двинутый новичок
<?
$a = array ("second","third","first");
tes($a);
function tes(&$a) {
$a = array("third","second","first");
}
print_r ($a);
?>
 

Crys

Двинутый новичок
флоппик
а.. ну да.. подумал, что ему нужна такая сортировка...

-~{}~ 03.11.08 20:44:

Тогда сюда - http://php.net/ru/usort
Даже не представляю, как можно подробнее объяснить... хотя может автору исходники нужны..
 

Globus51

Новичок
какие значения имеют $c и $d перед тем как начнется выполнение первой строки функции:
if ($c == "third" && $d == "second" return -1;
 

Nicholas

Новичок
2Globus51

какие значения имеют $c и $d
а открыть мануал, и прочитать про функцию usort слабо?
или религия не позволяет?

в предыдущем посте вам даже ссылку дали.
 

Фанат

oncle terrible
Команда форума
Globus51, если ты приведешь более осмысленный пример работы этой функции, то тебе легче будет понять, как она работает
 

Globus51

Новичок
Автор оригинала: Nicholas
2Globus51


а открыть мануал, и прочитать про функцию usort слабо?
или религия не позволяет?

в предыдущем посте вам даже ссылку дали.
Да нет не слабо конечно. Читал.
Вот разобраться что к чему слабо. Пока.

-~{}~ 03.11.08 22:29:

Автор оригинала: *****
Globus51, если ты приведешь более осмысленный пример работы этой функции, то тебе легче будет понять, как она работает
Другого у меня к сожалению нет. Пытаюсь в этом разобраться.
 

Globus51

Новичок
Пример по ссылке:
<?php
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

while (list($key, $value) = each($a)) {
echo "$key: $value
";
}
?>
 

Фанат

oncle terrible
Команда форума
прекрасно. что тебе в ней непонятно после объяснений в документации?
 

Globus51

Новичок
стало быть вначале, как только функция начнет работу $a="3" и $b="2"
затем первое условие if ($a == $b) {return 0;}
пропускаем и переходим ко второму return ($a < $b) ? -1 : 1;

так?
 

Globus51

Новичок
... переходим ко второму return ($a < $b) ? -1 : 1;

здесь первый аргумент (3) не меньше второго (2) стало быть возвращается 1

верно?
 

Фанат

oncle terrible
Команда форума
это можно записать, как
if ($a < $b) return -1;
if ($a > $b) return 1;

-~{}~ 03.11.08 23:55:

чтобы было понятнее.
 

Фанат

oncle terrible
Команда форума
в предыдущем сообщении разобран синтаскис языка, никакого отношения к сортировке не имеющий.
при том, что по ссылке русским языком, словами написано, что функция делает.
и если ты русского языка не понимаешь, то объяснять бесполезно
 

Globus51

Новичок
Автор оригинала: *****
это можно записать, как
if ($a < $b) return -1;
if ($a > $b) return 1;

-~{}~ 03.11.08 23:55:

чтобы было понятнее.
спасибо, так действительно понятнее.

итак возвращается 1, далее в массиве
$a = array(3, 2, 5, 6, 1);
"3" и "2" меняются местами и массив принимает вид:
$a = array(2, 3, 5, 6, 1);

правильно?
 

Globus51

Новичок
Что далее?
Берутся 2-е и 3-е значения массива, то есть "3" и "5". Сравниваются. Возвращается -1. Изменений в массиве не происходит...
 
Сверху