WauWau: Datum zerlegen

Beitrag lesen

Hallo IT-Frank,

Morgen ist Abgabetermin mit implementation der zusaetzlichen Aufgabe...

hem, langsam wirds ja richtig kompliziert ;-)

also, ich versuch da mal was zu basteln. Erst mal der script, so wie du ihn mir gepostet hast mit "fehlerkorrektur":

<?php
$datei = file('testdatei');
$new = "";
foreach($datei as $line)
{
  $date = ""; $description = "";
  $exp = explode(" ",$line);
  foreach($exp as $index => $word) {
    if($index <= 31)
      $date .= " ".$word;
    else
      $description .= " ".$word;
  }
  $date = strtotime($date);
  $new .= date("md")." ".$description;
}
print $new;
?>

Ok, außer ein paar Logiksachen (die explode-funktion ist irgendwie aus der schleife gerutscht ;-) funktioniert ja jetzt alles soweit. Wie ich eben mitbekommen habe, willst du aber plötzlich was ganz anderes:

Mar 21 Prüfungen: Nürnberg 210 Teilnehmer, München 40 Teilnehmern.
Jan 15 Prüfungen: Nürnberg 10 Teilnehmer, München 60 Teilnehmern.
Mar 11 Prüfungen: Nürnberg 30 Teilnehmer, München 10 Teilnehmern.
Jan 19 Prüfungen: Nürnberg 90 Teilnehmer, München 60 Teilnehmern.
Addiere die Teilnehmer zur Gesamtsumme und sortiere nach Datum
Ergebnis :
01 220 Teilnehmer
03 290 Teilnehmer

Hm - das wird ja plötzlich immer einfacher? Oder ist das eine andere Aufgabe? Ach so, nach datum sortieren, super.

Naja, du kommst dort oben jedenfalls unmöglich mehr um kompliziertere funktionen wie reguläre ausdrücke oder so was rum (das würde ich dir sehr ans herz legen).

Also, machen wir uns mal daran, es würde sowas vorliegen:

[Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Nov/Dez] [TAG] Prüfungen: Ort [ANZAHL] Teilnehmer, Ort [ANZAHL] Teilnehmer.

Vorrausgesetzt, es bleibt _streng_ nach diesem muster, wirds jetzt recht einfach:

<?php
$datei = file("neue_aufgabe[...]");

$new = array(); // Da wird ein Array mit der Teilnehmerzahl und dem datum reinkommen, das noch sortiert werden müssen wird

foreach($datei as $eintrag)
{
  preg_match("(\w \d\d) Prüfungen: \w (\d+), \w (\d+).", $matches);
  // $matches[1] sollte jetzt z.B. "Mar 21" sein
  // $matches[2] die Zahl der ersten Prüfung, z.B. 210
  // $matches[3] die Zahl der zweiten prüfung, z.B. 40
  $timestamp = strtodate($matches[1]);
  $teilnehmer = $matches[2] + $matches[3];
  $new[$timestamp] = $teinehmer;
}

$new = asort($new); // ksort = ältester termin zuerst, asort = neuster zuerst!

$counter = 1; //Zähler der dann hochzählt

$ausgabe = ""; // Endausgabe
foreach($new as $eintrag)
{
  $ausgabe .= (strlen($counter) < count($datei) ? "0".$counter : $counter);
  $ausgabe .= " ".$eintrag;
}

print $ausgabe;

?>

Wir können auch in E-Mail-Kontakt treten, wenn dir das hilft (dann kannst du besser sehen, ob ich dir schon geantwortet habe).

na dann,

WauWau

--
+-- WauWau Selfcode
|   ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
+-- WauWau Nostalgie
|   Die Bedeutung des Bellens ("WauWau") liegt ursprünglich darin, dass ein
|   Gruppenfremder gewarnt oder ihm Alarm signalisiert wird.
+-- WauWau Heute
|   Heutzutage ist die Bedeutung von "WauWau": Achtung, hier kommt "WauWau"!
|   Die Bedeutung liegt hierbei auf den "Wau", und zwar auf beiden.
+-- WauWau E-Mail
|   Coming soon...