Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка данных из файла
 
 автор: fiper   (14.01.2008 в 01:32)   письмо автору
 
 

В файле хранится приблизительно следующее

1:4:4
2:6:3
3:9:1
4:1:3

Нужно отсоритировать по 2 значению в порядке убывания. Пробовал array_multisort() и rsort самого файла.Я так понимаю, что нужно в цике поместить значения в массив, затем отсортировать их и вывести, но как это сделать?

Получиться должно вот так:

3:9:1
2:6:3
1:4:4
4:1:3

   
 
 автор: fiper   (14.01.2008 в 12:48)   письмо автору
 
   для: fiper   (14.01.2008 в 01:32)
 

Кто поможет?

   
 
 автор: Unkind   (14.01.2008 в 13:48)   письмо автору
 
   для: fiper   (14.01.2008 в 12:48)
 

Лучше использовать СУБД.

<?php
function array_sort($a)
{
    
$s false;

    while( 
$s == false  )
    {
        
$s true;

        for(
$i 0$i count($a) - 1$i++)
        {
            if( 
$a[$i][1] < $a[$i 1][1] )
            {
                list(
$a[$i 1][1], $a[$i][1]) = array($a[$i][1], $a[$i 1][1]);
                
                
$s false;
            }
        }
    }

    return 
$a;
}

$array file('file.txt');
$array array_map(create_function('$a''return explode(":", chop($a));'), $array);
$array array_sort($array);
$array array_map(create_function('$a''return implode(":", $a);'), $array);

$fh fopen('file.txt''wb');
fwrite($fhimplode("\r\n"$array));
fclose($fh);
?>

   
 
 автор: kasmanaft   (14.01.2008 в 16:04)   письмо автору
 
   для: Unkind   (14.01.2008 в 13:48)
 

Можно проще:

<?php
function file_sort($a$b) {
    list (, 
$str1) = explode(":"$a);
    list (, 
$str2) = explode(":"$b);

    if (
$str1 === $str2)
        return 
0;             
        
    return (
$str1 $str2) ? : -1;
}

$file file("file.txt");
$file array_map("trim"$file);
usort($file"file_sort");

print_r($file);
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования