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