Array sorteren op datum
Ik probeer een array te sorteren op een datum, maar dit lukt mij niet :S
Beetje jammer maarja ik probeer het uit te leggen:
Ik heb 3 datums in mijn array staan. Deze datums kunnen uiteraard verschillen, maar ik wil die datums per rij filteren op welke het eerste voorkomt en deze dan sorteren. Een stukje script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$serviceoverzicht[$debnr][0] = $srvcnr;
$serviceoverzicht[$debnr][1] = $debnr;
$serviceoverzicht[$debnr][2] = $debnaam;
$serviceoverzicht[$debnr][3] = $datumebi; // niet te sorteren datum
$serviceoverzicht[$debnr][4] = $volgendepi; // te sorteren datum
$serviceoverzicht[$debnr][5] = $volgendepo; // te sorteren datum
$serviceoverzicht[$debnr][6] = $volgendebeesb; // te sorteren datum
$eerstedatum = Array();
if (trim($volgendepi) != '') { $eerstedatum[] = $volgendepi; }
if (trim($volgendepo) != '') { $eerstedatum[] = $volgendepo; }
if (trim($volgendebeesb) != '') { $eerstedatum[] = $volgendebeesb; }
sort($eerstedatum);
$serviceoverzicht[$debnr][7] = @$eerstedatum[0];
foreach($serviceoverzicht as $sortarray)
{
$column[] = $sortarray[7];
sort($column);
}
?>
$serviceoverzicht[$debnr][0] = $srvcnr;
$serviceoverzicht[$debnr][1] = $debnr;
$serviceoverzicht[$debnr][2] = $debnaam;
$serviceoverzicht[$debnr][3] = $datumebi; // niet te sorteren datum
$serviceoverzicht[$debnr][4] = $volgendepi; // te sorteren datum
$serviceoverzicht[$debnr][5] = $volgendepo; // te sorteren datum
$serviceoverzicht[$debnr][6] = $volgendebeesb; // te sorteren datum
$eerstedatum = Array();
if (trim($volgendepi) != '') { $eerstedatum[] = $volgendepi; }
if (trim($volgendepo) != '') { $eerstedatum[] = $volgendepo; }
if (trim($volgendebeesb) != '') { $eerstedatum[] = $volgendebeesb; }
sort($eerstedatum);
$serviceoverzicht[$debnr][7] = @$eerstedatum[0];
foreach($serviceoverzicht as $sortarray)
{
$column[] = $sortarray[7];
sort($column);
}
?>
Maar nu sorteert hij dus niet.. :(
Wat doe ik verkeerd?
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
Iemand..? :)
Quote:
Dit zegt natuurlijk vrij weinig. Krijg je een foutmelding? Hoe ziet de array eruit voor de sort() en hoe erna?Maar nu sorteert hij dus niet.. :(
Quote:
Maar nu sorteert hij dus niet.. :(
Dit wil dus zeggen, geen foutmelding :)
Maar de datums staan in DD-MM-YYYY formaat.
Quote:
Dat is dus je eerste probleem, dat zijn geen data! Dat zijn niet meer strings waarvan jij en ik weten dat het een datum voor moet stellen.Maar de datums staan in DD-MM-YYYY formaat.
Sorteren gaat dus ook niet lekker:
10-04-2008
09-05-2008
21-04-2008
03-01-2009
Wordt dan dus gesorteerd als:
03-01-2009
09-05-2008
10-04-2008
21-04-2008
Niet echt zoals je het zou willen lijkt me. Kortom, het enige geldige formaat voor een datum is yyyy-mm-dd, daar zou je nog redelijk op kunnen sorteren. Maar sowieso is PHP niet echt een gewenste taal om te rekenen/sorteren met data en tijden, SQL is daar bijvoorbeeld veel beter in...
Maar ik wil met PHP kijken welke van de 3 data het dichts bij is, zodat onze monteurs een inhaalslag kunnen maken op achterstallig werk. Dit moet dus gebeuren met PHP.
Tja, ik blijf nog wel ff stoeien en je hoort het hier als ik wat gevonden heb.
Iig bedankt tot zover en als iemand nog ideeen heeft, gooi ze maar neer!
Dat werkt een stuk betrouwbaarder dan de strings waar je nu mee aan het rommelen bent...