Arraysortierung will nicht

styz

Mitglied
hi,

ich benutze eine textdatei weil mein server kein mysql unterstützt und hab auch schon ne menge beiträge durchwühlt aber konnte nicht finden warum es nicht funktioniert also ein weiterer thread dazu :/

also ich hab in einem array das datum gespeichert. Tag Monat und Jahr haben einen eigenen array und das ziel ist das die älteste bzw das "kleinste" datum zuerst angezeigt wird

ich hatte so etwas zuerst probiert:

PHP:
//$zahl ist die anzahl der Arrayfelder

for($a=1;$a<$zahl;$a++) {   
  for($b=1;$b<$zahl;$b++) {
    if($tag[$a] < $tag[$b]................| $a != $b]) {
      echo "<tr>";
      echo "<td width=150><h4>&nbsp;$tag[$a].$monat[$a].$jahr[$a]&nbsp;-&nbsp;$bis_tag[$a].$bis_monat[$a].$bis_jahr[$a]</td>";
      echo "<td width=150><h4>&nbsp;$seminar[$a]</td>";
      echo "<td width=250><h4>&nbsp;$thema[$a]</td>";
      echo "<td width=70><center><a href=http://$url[$a] target=_blank>klicken</center></td>";
      echo "</tr>";
    }
  }
}

das wollte nicht funktionieren, ich hab kein syntax fehler bekommen aber es wollte auch nicht also hab ichs anders probiert.

mein denkansatz war folgender:

01.01.2003 = 20030101
02.01.2003 = 20030102

also versuchte ich mich hierdran:

PHP:
// $zahl ist die anzahl der arrayfelder

for($a=1;$a<$zahl;$a++) {   
  for($b=1;$b<$zahl;$b++) {
    $current1 = $jahr[$a].$monat[$a].$tag[$a];
    $current2 = $jahr[$b].$monat[$b].$tag[$b];
    if($current1 < $current2) {	 
      echo "<tr>";
      echo "<td width=150><h4>&nbsp;$tag[$a].$monat[$a].$jahr[$a]&nbsp;-&nbsp;$bis_tag[$a].$bis_monat[$a].$bis_jahr[$a]</td>";
      echo "<td width=150><h4>&nbsp;$seminar[$a]</td>";
      echo "<td width=250><h4>&nbsp;$thema[$a]</td>";
      echo "<td width=70><center><a href=http://$url[$a] target=_blank>klicken</center></td>";
      echo "</tr>";
    }
  }
}

Ergebnis beider Versuche ist das jede Spalte 3-4 mal angezeigt wird und einfach nicht nach Datum sortiert wurde.

jede hilfe wäre hilfreich :rolleyes:
 
mein denkansatz war folgender:

01.01.2003 = 20030101
02.01.2003 = 20030102

Guter Ansatz, jetzt bräuchtest du nur noch den Sortieralgorithmus Bubblesort ausführen.

Hier ein Beispiel allerdings Java Code müsste sich aber leicht umsetzen lassen auf PHP
PHP:
public void bubble(int [] a) 
 { boolean b = true; 
   int j=max; 
   while(b) // true 
   { b = false; 
    for(int i =max-1;i>max-j;i--) 
             if(a[i] < a[i-1])  
         { tausch(i,i-1,a); 
          b = true; 
          } // of if 
    j--; 
    } // of while 
   }

http://liebknecht-gymnasium.bei.t-online.de/sort/html-Seiten/Programmierung.html
 
nunja, da ich tag, monat und jahr in einzelnen array gespeichert habe würde sort nicht gut funktionieren. Außerdem gibt es auch noch ein datum, welches das ende speichert
-> würde die ganzen datumsangaben durcheinander würfeln.
 
hmm,

also mir ist jetzt gerade restmal klar geworden, das mein problem ja noch ganz wo anders liegt.

wenn ich den datums array sortieren lasse sollten ja auch noch die restlichen felder mit sortiert werden.

kann man arrays...naja "verbinden", das ich einfach das datum mit sort sortiere und er entsprechend der sortierung die felder der anderen arrays verschiebt?

sonst würde das datum nicht mehr zum entsprechendem rest gehören, wäre ja auch mist
 
Zurück