Array sorteren op datum

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wout van der Burg

Wout van der Burg

23/04/2008 11:49:00
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
    }

?>


Maar nu sorteert hij dus niet.. :(
Wat doe ik verkeerd?
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
 
PHP hulp

PHP hulp

27/04/2024 00:36:44
 
Wout van der Burg

Wout van der Burg

25/04/2008 09:14:00
Quote Anchor link
Iemand..? :)
 
Joren de Wit

Joren de Wit

25/04/2008 11:54:00
Quote Anchor link
In welk formaat staan je data? Verder is het sorteren met PHP altijd een lastig probleem, zeker met multidimensionale arrays.

Quote:
Maar nu sorteert hij dus niet.. :(
Dit zegt natuurlijk vrij weinig. Krijg je een foutmelding? Hoe ziet de array eruit voor de sort() en hoe erna?
 
Wout van der Burg

Wout van der Burg

25/04/2008 14:20:00
Quote Anchor link
Quote:
Maar nu sorteert hij dus niet.. :(

Dit wil dus zeggen, geen foutmelding :)

Maar de datums staan in DD-MM-YYYY formaat.
 
Joren de Wit

Joren de Wit

25/04/2008 14:24:00
Quote Anchor link
Quote:
Maar de datums staan in DD-MM-YYYY formaat.
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.

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...
 
Wout van der Burg

Wout van der Burg

25/04/2008 15:34:00
Quote Anchor link
Das zonder meer waar. :)
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!
 
Joren de Wit

Joren de Wit

25/04/2008 15:38:00
Quote Anchor link
In dat geval zou je de data met strtotime() eerst om kunnen zetten naar een timestamp en vervolgens de vergelijkingen aan de hand van deze timestamp uit gaan voeren.

Dat werkt een stuk betrouwbaarder dan de strings waar je nu mee aan het rommelen bent...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.