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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как сортировать дату?

Сообщения:  [1-10]   [11-17] 

 
 автор: Shorr Kan   (14.04.2005 в 23:05)   письмо автору
 
   для: cheops   (14.04.2005 в 22:57)
 

Наоборот! У меня юникстаймстамп в некоторых местах - одинаков... и вот из-за этой ksort и krsort - происходит выводт пользователю только уникальных значений... а мне нужно - всех.

   
 
 автор: cheops   (14.04.2005 в 22:57)   письмо автору
 
   для: Shorr Kan   (14.04.2005 в 18:56)
 

А дублируется что? Есть функция array_unique, которая удаляет из массива дублирующие значения и оставляет только уникальные.

   
 
 автор: Shorr Kan   (14.04.2005 в 18:56)   письмо автору
 
   для: cheops   (14.04.2005 в 12:13)
 

Так... Ошибок нет - и вроде даже сортирует... Но убивает дублирующиеся значения... Это можно как-то исправить? А то только половина истории вывелась.

   
 
 автор: cheops   (14.04.2005 в 12:13)   письмо автору
 
   для: Shorr Kan   (14.04.2005 в 11:59)
 

А ну да, конечно же, боюсь без foreach во втором цикле не обойтись
<?php 
$itog
=0
foreach(
$arr as $value){ 
$info=explode("*",$value); 
$itog=$itog+$info[2]; 
... 
?>

   
 
 автор: Shorr Kan   (14.04.2005 в 11:59)   письмо автору
 
   для: cheops   (14.04.2005 в 11:26)
 

Он мне на arr[$i] ругается... и правильно - если я принтую arr[0] - это неизвестная штука для него... формат строки сейчас такой:

1112685502*05 April 2005 11:18:22*Percent*+0.00

Первое - это unix_timestamp...


$count=count($file);
for($i=0;$i<$count;$i++) 

  $info=explode("*",$file[$i]); 
  $arr[$info[0]]=$info[1]."*".$info[2]."*".$info[3]; 

...
...
...

ksort($arr);unset($info);
for($i=0;$i<$count;$i++){
$info=explode("*",$arr[$i]);
$itog=$itog+$info[3];


Ошибки, ошибки, ошибки... он не понимает $arr[0], $arr[1], и т.д.

   
 
 автор: cheops   (14.04.2005 в 11:26)   письмо автору
 
   для: Shorr Kan   (14.04.2005 в 00:39)
 

Смысл такой что мы разрезаем строку
2005 04 09 14:22:47*09 April 2005 14:22:47*Percent*+0.89

по символу * - получается массив $info c 4 элменетами, мы создаём массив $arr, ключём которого выступает первый элмент (время, по которому мы сортируем), а значение оставшаяся часть строки. Так как она распилена по символу * мы её опять склеиваем. Потом сортируем массив и режем уже строку
09 April 2005 14:22:47*Percent*+0.89

А да, во вотором цикле массив $info лучше уже не использовать, так как он замусорен первым циклом, или обнулить его при помощи unset
<?php
  
unset($info);
?>

перед повторным использованием.

   
 
 автор: cheops   (14.04.2005 в 11:17)   письмо автору
 
   для: Shorr Kan   (14.04.2005 в 08:31)
 

Ну это было бы идеально, я про это и намёкивал во вотором посту :))) - это удобнее, так как число будет одно, а не несколько, следовательно и сортировка будет происходить очень быстро.

   
 
 автор: Shorr Kan   (14.04.2005 в 08:31)   письмо автору
 
   для: Shorr Kan   (14.04.2005 в 00:39)
 

А что если писать для сортировки date("U"); ?

"U
Количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT)
"

   
 
 автор: Shorr Kan   (14.04.2005 в 00:39)   письмо автору
 
   для: cheops   (13.04.2005 в 21:51)
 

Я, конечно, еще не успел попробовать... но вот так вот смотрю.... не понимаю кода. Попробую - модет в процессе использования что и пойму... Но если у вас будет время - попробуйте объяснить первый for... Что-то он не коннектится с моим междоушием...

======
Попробовал... Ошибки :(

Во-первых, он не считает повторяющиеся строки. Т.е., у меня 15 строк, но уникальных по этой дате в $info[0] - только девять. Он на print count($arr) девять и печатает. Во-вторых... Просто ошибки выводит.

Notice: Undefined offset: 0
это на строку, где $info=explode("*",$arr[$i]);

   
 
 автор: cheops   (13.04.2005 в 21:51)   письмо автору
 
   для: Shorr Kan   (13.04.2005 в 14:31)
 

Т.е. первая дата у нас в info[0]? Тогда следует сначала отсортировать массив
<?php
$arr 
= array();
for(
$i=0;$i<$count;$i++)

  
$info=explode("*",$file[$i]); 
  
$arr[$info[3]] = info[1]."*".info[2]."*".info[3];
}
// Сортируем
ksort($arr);
?>

а затем выполнять полезную работу...
<?php
$itog
=0
for(
$i=0;$i<$count;$i++){ 
$info=explode("*",$arr[$i]); 
$itog=$itog+$info[2]; 
...
?>

   

Сообщения:  [1-10]   [11-17] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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