• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Сортировка по параметру

  • Автор темы egor811
  • Дата начала
E

egor811

PHP:
<?php
$g[0]="13.08.1998";
$g[1]="13.08.1998";
$g[2]="29.05.2007";
$g[3]="08.07.2008";
$g[4]="07.06.2005";
$g[5]="07.04.1991";
$g[6]="14.11.1991";
$g[7]="03.03.2003";
$g[8]="07.05.2002";
$g[9]="07.12.2001";
$g[10]="06.02.2017";
$g[11]="31.04.2008";
$g[12]="08.11.1992";
$g[13]="28.03.1994";
$g[14]="19.06.1996";
$g[15]="01.01.2009";
$g[16]="15.05.2009";
$g[17]="08.08.2007";
$g[18]="07.04.2015";
$g[19]="16.02.2023";
$g[20]="18.05.2001";
$g[21]="07.09.2009";
$g[22]="05.12.2012";
$g[23]="21.12.2012";
$g[24]="08.07.2005";
$g[25]="19.05.2000";
$g[26]="06.05.2007";
$g[27]="05.04.2003";
$g[28]="03.09.2010";
$g[29]="06.06.2003";


for($j=2;$j>=0;$j--)
{
switch($j)
{
case 2:
for($i=0; $i<= count($g); $i++)
{
$e = explode(".",$g[$i]);
$e1 = explode(".",$g[$i+1]);
if($e[$j] < $e1[$j])
{
$k=$g[$i];
$g[$i]=$g[$i+1];
$g[$i+1]=$k;
$i=0;
}
}
break;
case 1:
for($i=0; $i<= count($g); $i++)
{
$e = explode(".",$g[$i]);
$e1 = explode(".",$g[$i+1]);
if($e[2]==$e1[2])
{
if($e[1]<$e1[1])
{
$k=$g[$i];
$g[$i]=$g[$i+1];
$g[$i+1]=$k;
$i=0;
}
}
}
break;
case 0:
for($i=0; $i<= count($g); $i++)
{
$e = explode(".",$g[$i]);
$e1 = explode(".",$g[$i+1]);
if(($e[1]==$e1[1])and($e[2]==$e1[2]))
{
if($e[0]<$e1[0])
{
$k=$g[$i];
$g[$i]=$g[$i+1];
$g[$i+1]=$k;
$i=0;
}
}
}
break;
}	
} 
for($i=0; $i<= count($g); $i++)
{
echo($g[$i]."<br>");
}
?>

выдает:
13.08.1998
16.02.2023
06.02.2017
07.04.2015
21.12.2012
05.12.2012
03.09.2010
07.09.2009
15.05.2009
01.01.2009
08.07.2008
31.04.2008
08.08.2007
29.05.2007
06.05.2007
08.07.2005
07.06.2005
06.06.2003
05.04.2003
03.03.2003
07.05.2002
07.12.2001
18.05.2001
19.05.2000
13.08.1998
19.06.1996
28.03.1994
08.11.1992
14.11.1991
07.04.1991


Соответственно - не правильно. Можно заметить, что все элементы стоят на своих местах акромя первого. Я, в принципе, понимаю, что где то с индексированием, но вот в каком месте - понять не могу.
 
A

acorn

Это ж надо было додуматься так обращаться с датами, а если будет дата mm.dd.yy вы будете переписывать алгоритм? Почитайте лучше функции для работы с датой-временем, работать с timestamp куда приятнее, чем парсить каждый раз строку.
 
E

egor811

Это ж надо было додуматься так обращаться с датами, а если будет дата mm.dd.yy вы будете переписывать алгоритм? Почитайте лучше функции для работы с датой-временем, работать с timestamp куда приятнее, чем парсить каждый раз строку.
Согласен, но это не решает задачи.
Забыл добавить, что это еще и инема файлов, хотя видимо без разницы....
 
E

egor811

Большое спасибо. Действительно очень удобно используется timestamp.

PHP:
<?php
$g=scandir("./files");

for($i=2;$i<count($g);$i++){
$d=explode(".",$g[$i]);
$date[$i-2]=mktime(0,0,0,$d[1],$d[0],$d[2]);
}
rsort($date);
for($i=0;$i<count($date);$i++){
echo(date('d.m.Y',$date[$i]));
echo("<br>");
}
?>


А еще можно использовать scandir(string folder[, 1 or 0])
при использоавнии 2ого параметра сортируется по убыванию или возрастпнию.
Всем спасибо, можно закрывать тему.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!