Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Mehrdimensionalen Array sortieren nach Datum (https://www.delphipraxis.net/104368-%5Bphp%5D-mehrdimensionalen-array-sortieren-nach-datum.html)

geofranz01 2. Dez 2007 18:12


[PHP] Mehrdimensionalen Array sortieren nach Datum
 
Hi,

hab folgendes Problem: Ich will einen unsortierten mehrdimensionalen Array nach dem Datum, das im ersten Array steht, sortiere. Dafür wollte ich die Funktion "uasort" benutzen. Allerdings funzt bei mir die Werteübergabe an die Bewerte-Funktion(-1,0,1) nicht. Wenn ich die Funktion normal aufrufe, mit den beiden Daten als String, bekomme ich aber den richtigen Rückgabewert. Was mache ich falsch???

Der Aray:

Array (
[24.09.2007] => Array ( [Kurztitel] => Test [Beschreibung] => Beschreibung test )
[27.05.2007] => Array ( [Kurztitel] => Testaa2 [Beschreibung] => beschreibung 2 )
[28.10.2008] => Array ( [Kurztitel] => nummer3 [Beschreibung] => beschrebung 3 ) ..
..
..
(so gehts immer weiter)


Die Funktion:

Code:
function sortiere ($item1, $item2) {

$d1=$item1[0].$item1[1];
$m1=$item1[3].$item1[4];
$y1=$item1[6].$item1[7].$item1[8].$item1[9];

$d2=$item2[0].$item2[1];
$m2=$item2[3].$item2[4];
$y2=$item2[6].$item2[7].$item2[8].$item2[9];


$d1=(int)$d1;
$m1=(int)$m1;
$y1=(int)$y1;
$d2=(int)$d2;
$m2=(int)$m2;
$y2=(int)$y2;


if (y1 == y2)
  {
    if (m1 == m2)
     {
        if (d1 == d2)
         {return 0; }
        else
           if (d1 > d2) {return 1; }
          else
           if (d1 < d2) { return -1;}
      }
    else
        if (m1 > m2) {return 1 ;}
       else
        if (m1 < m2) { return -1;}
  }
else
    if (y1 > y2) {return 1 ;}
  else
    if (y1 < y2) { return -1;}

}
Übergeben tu ich den array so:
Code:
uasort($meinarray, 'sortiere');
Zum Datum: Das steht immer so: 'dd.mm.yyyy'

Wo ist mein Denkfehler???

Vielen Dank für eure Hilfe!!!

P.S. Bin noch ganz neu in PHP und kenne mich noch nicht so gut aus, also bitte nicht zu streng :-)
Falls ihr meint eine Datenbank wäre besser: Klar, nur leider gehts nur so mit Arrays, da ich diesen aus einer INI-Datei parse, die ein Delphi-Projekt benötigt.

cruiser 2. Dez 2007 18:17

Re: [PHP] Mehrdimensionalen Array sortieren nach Datum
 
evtl. ist array_multisort von nutzen.

EDIT:

uksort und

Code:
function sortiere ($item1, $item2) {
  list($d,$m,$y) = explode('.',$item1);
  $timestamp1 = mktime(0,0,0,$m,$d,$y);

  list($d,$m,$y) = explode('.',$item2);
  $timestamp2 = mktime(0,0,0,$m,$d,$y);

  if ($timestamp1 == $timestamp2) return 0;
  if ($timestamp1 > $timestamp2) return 1;
  if ($timestamp1 < $timestamp2) return -1;
}
sind deine Freunde

geofranz01 2. Dez 2007 18:26

Re: [PHP] Mehrdimensionalen Array sortieren nach Datum
 
Hm,
eigentlich will ich ja nur einen großen Array sortieren. Der Wert(wieder Array) des Index (26.09.2007) ist halt wieder ein Array. Eigentlich müsste das oben doch klappen, oder?

mfg,
geofranz

Thorben77 2. Dez 2007 18:28

Re: [PHP] Mehrdimensionalen Array sortieren nach Datum
 
Vielleicht funktioniert es mit ksort() und SORT_STRING als Parameter?

geofranz01 2. Dez 2007 18:31

Re: [PHP] Mehrdimensionalen Array sortieren nach Datum
 
@ Thorben: Habs probiert, funzt aber nicht. Es wird nach dem Tag angeordnet.

mfg,
geofranz

cruiser 2. Dez 2007 18:39

Re: [PHP] Mehrdimensionalen Array sortieren nach Datum
 
uhm siehe oben... kam keine rote Box :oops:

geofranz01 2. Dez 2007 18:58

Re: [PHP] Mehrdimensionalen Array sortieren nach Datum
 
Huju!!!!

Danke cruiser!! :-D :-D :thumb:

Es klappt!!! Meine 4-stündigen Versuche haben ein Ende!!!

@Cruiser:

Es heißt "mktime" und nicht "mkdate". :wink:
Roter Kasten: Hab's rausbekommen. "mkdate" war schwieriger. :lol: :wink:

Vielen Dank und mfg,
geofranz

cruiser 2. Dez 2007 19:20

Re: [PHP] Mehrdimensionalen Array sortieren nach Datum
 
stümmt... war aussem stehgreif getippt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz