За последние 24 часа нас посетили 15136 программистов и 1693 робота. Сейчас ищет 961 программист ...

Как отсортировать сложные данные?

Тема в разделе "PHP для новичков", создана пользователем skorpion, 25 май 2014.

  1. skorpion

    skorpion Активный пользователь

    С нами с:
    6 фев 2011
    Сообщения:
    56
    Симпатии:
    1
    Адрес:
    Москва
    Всем привет!
    Есть текстовый файл, в нем складываются ежедневные данные, вот содержание:
    Код (Text):
    1. 2014,4,15,17,48,54,95.0,
    2. 2014,4,16,16,27,05,94.2,
    3. 2014,4,17,15,18,57,94.4,
    4. 2014,4,18,16,24,41,104.7,
    5. 2014,4,19,17,04,58,95.5,
    6. 2014,4,20,14,07,36,94.2,
    7. 2014,4,21,16,19,32,94.1,
    8. 2014,4,22,14,41,32,94.0,
    9. 2014,4,23,00,55,31,93.7,
    10. 2014,4,24,20,42,15,93.6,
    Задача в том чтобывы вести эти данные отсортированными по последним числам...
    Мол 24 апреля был зафиксирован минимум 93.6 градусов.
    А 18 апреля был зафиксирован максимум 104.7 градусов.

    Вот пытаюсь отсортировать строки, но не знаю как такое сотворить по последним числам.
    Код (PHP):
    1. $file_name = "baza/new_baza.txt" ;
    2. $lines = file($file_name) ;
    3.  
    4. if (isSet($_GET["line"]) == true && isSet($lines[(integer) $_GET["line"]]) == true) {
    5.     unset($lines[(integer) $_GET["line"]]) ;
    6.     $file = fopen($file_name,"a+") ;
    7.     flock($file,LOCK_EX) ;
    8.     ftruncate($file,0) ;
    9.     fwrite($file,implode("",$lines)) ;
    10.     flock($file,LOCK_UN) ;
    11.     fclose($file) ;
    12.     header('Location: /?tabmenu=file');
    13. }
    14.  
    15. $count = sizeof($lines) ; for ($a = 0 ; $a < $count ; ++$a) {
    16. array_multisort ($lines, SORT_ASC, SORT_NUMERIC);
    17. echo "<p><a href='content.php?wtf=file&line=" . $a . "' target='_self'>" . $lines[$a] . "</a></p>" ;
    18. }
    Помогите пожалуйста!
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Код (PHP):
    1. $file_name = "baza/new_baza.txt";
    2. $lines = file($file_name);
    3. $arrSorted = array();
    4. foreach ($lines as $line) {
    5.     //$line = rtrim($line);
    6.     $arrSorted[] = explode(',', $line);
    7. }
    8.  
    9. function cmp($a, $b){// функция сравнения
    10.     if ($a[6] == $b[6]) {
    11.         return 0;
    12.     }
    13.     return ($a[6] < $b[6]) ? -1 : 1;
    14. }
    15.  
    16. usort($arrSorted, "cmp");
    17.  
    18. printf('минимальная температура %s зафиксирована %d.%02d.%02d',
    19.                 $arrSorted[0][6], $arrSorted[0][0], $arrSorted[0][1], $arrSorted[0][2]);
    20. echo '<br>';
    21. $mx = count($arrSorted)-1;
    22. printf('максимальня температура %s зафиксирована %d.%02d.%02d',
    23.                 $arrSorted[$mx][6], $arrSorted[$mx][0], $arrSorted[$mx][1], $arrSorted[$mx][2]);
     
  3. skorpion

    skorpion Активный пользователь

    С нами с:
    6 фев 2011
    Сообщения:
    56
    Симпатии:
    1
    Адрес:
    Москва
    Спасибо огромное, сортировка то что нужно!