|
|
|
|
|
для: Maxam
(17.01.2008 в 21:47)
| | mysql... | |
|
|
|
|
|
|
|
для: Maxam
(17.01.2008 в 18:15)
| | ЛЮДИ!!! НУ КАК СДЕЛАТЬ ВЫВОД С БОЛЬШЕГО ЗНАЧЕНИЯ А НЕ НАОБОРОТ!!!???
ПОЖАЛУЙСТА, СКАЖИТЕ!!! | |
|
|
|
|
|
|
|
для: Maxam
(17.01.2008 в 16:54)
| | Так что, там если наоборот это весь код нужно переворачивать?
Просто я пробовал array_reverse, но чо-то так с ним и не вышло ((( | |
|
|
|
|
|
|
|
для: vitali
(17.01.2008 в 11:49)
| | оЙ! Кароче всё робит, кроме одного!!! Он всегда выводит с самых маленьких значений до самых больших!!! А мне нужно наоборот! Как сделать? | |
|
|
|
|
|
|
|
для: Maxam
(17.01.2008 в 16:23)
| | Попорядку:
1) выход из ф-ции priceCmp (return) возвращает в зависимости от результатов сравнения {0,1,-1}
2) В контексте вашего самого первого обращения
пор_номер(от0 до $count)|Имя|Рейтинг(от 0 до бескон.)
Как выстроить при выводе от самых рейтинговых, до низших (т.е. от больших чисел к меньшим)? Пример Вашего скрипта работает неправильно по двум причинам:
А) в ключе price (д.б. рейтинг) т.е. $a2
Б) причем т.к. ф-ция возвращает все эл-ты типа string (в вашем случае), то $a2 надо перевести в int, иначе priceCmp() отработает неверно.
Рабочий вариант Вашего примера:
<?php ## Сортировка строк файла с 3-я полями разделитель (|)
// функция сортировки
function priceCmp ( $a, $b ){
if ( $a[price] == $b[price] ) { return 0; }
return ( $a[price] < $b[price] ) ? 1 : -1;
}
// считываем данные из файла в массив уровней
$file = file ("SortStrFile.dat"); //Читает содержимое файла и помещает его в массив
$lines = count ($file); // количество строк в файле
// запускаем цикл
for($i=0; $i<$lines; $i++){
// раскладываем уровни на элементы
list($a0, $a1, $a2) = explode ("|",$file[$i]);
// $a0 - Текущий номер
// загоняем элементы в массив
// $a1 - это имя участников
// $a2 - рейтинг
if (gettype($a2) != "integer") $a2 = (int) $a2;
$array[$i] = array(price => $a2, name => array($a0, $a1, $a2));
}
usort($array, priceCmp); //сортируем массив
//прогоняем отсортированный массив в цикле и выводим на печать
foreach ($array as $keys => $value){
foreach ($value as $key => $val){
// если не массив, то печатаем переход на новую строку
if(!is_array($val)){ print "<br>\n"; continue;}
// если массив, то это уже отсортированные наши данные
foreach ($val as $v){
// печатаем данные
print $v." ";
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: vitali
(17.01.2008 в 11:49)
| | Так что делает return? | |
|
|
|
|
|
|
|
для: Maxam
(16.01.2008 в 19:07)
| | По моему фрагмент:
function priceCmp ( $a, $b ){
if ( $a[price] == $b[price] ) return 0;
if ( $a[price] < $b[price] ) return -1; return 1;}
должен выглядеть так:
function priceCmp ( $a, $b ){
if ( $a[price] == $b[price] ) { return 0; }
return ( $a[price] < $b[price] ) ? -1 : 1;
}
|
более читабелен. | |
|
|
|
|
|
|
|
для: Blizard
(16.01.2008 в 14:29)
| | Не, вот это все вроде разобрался:
<?php
// функция сортировки
function priceCmp ( $a, $b ){
if ( $a[price] == $b[price] ) return 0;
if ( $a[price] < $b[price] ) return -1; return 1;}
// считываем данные из файла в массив уровней
$file = file ("b.dat");
// количество уровней
$lines = count ($file);
// запускаем цикл
for($i=0; $i<$lines; $i++){
// раскладываем уровни на элементы
list($a0, $a1, $a2) = explode ("::",$file[$i]);
// загоняем элементы в массив
// $a0 - это имя участников
$array[$i] = array(price => $a0, name => array($a0, $a1, $a2));
}
//сортируем массив
usort($array, priceCmp);
//прогоняем отсортированный массив в цикле и выводим на печать
foreach ($array as $keys => $value){
foreach ($value as $key => $val){
// если не массив, то печатаем переход на новую строку
if(!is_array($val)){ print "<br>\n"; continue;}
// если массив, то это уже отсортированные наши данные
foreach ($val as $v){
// печатаем данные
print $v." ";
}
}
}
?>
|
Но есть вопрос, что делает в этом случае:
function priceCmp ( $a, $b ){
if ( $a[price] == $b[price] ) return 0;
if ( $a[price] < $b[price] ) return -1; return 1;}
|
return? | |
|
|
|
|
|
|
|
для: vitali
(16.01.2008 в 14:10)
| | посмотрите тут http://omsk777.ru/all.php?act=sortarrr может быть поможет ) | |
|
|
|
|
|
|
|
для: Maxam
(16.01.2008 в 12:20)
| | Иэвиняюсь конечно, как видно с Вашего примера, у Вас ключем для сортировки являетя третье поле, так и отсортируйте по нему Ваш массив и выташите все первые поля строк массива. | |
|
|
|
|