Arbeiten mit Multi Array (Datensatz Suche, Werte ausgeben)

Karl Peh

Grünschnabel
Hallo,

ich verzweifle gerade an einem Multi Array bzw. an dessen Auswertung.

Vorweg, was möchte ich überhaupt erreichen. Ich versuche mich an einer Erinnerungsfunktion für Termine auf einer Homepage. Aus einer Liste mit mehreren Terminen sollen die nächsten (1 bis 2) Termine angezeigt werden.

Die Daten werden zunächst unsortiert aus einer Datei ausgelesen und zum Beispiel das Datum als $e01 (Format Ymd) bereitgestellt. Der zugehörige Name der Veranstaltung als z.B. $e01t. Mit diesen Variablen wird ein MultiArray erstellt, indem ich auch mal als Vergleichswert das aktuelle Datum als Wertesatz mit einfließen lasse. Diese Werteliste wird dann nach Datum sortiert. Soweit klappt das auch, aber dann komm ich nicht mehr weiter.

Nun habe ich mir gedacht, sollte einfach der interne Zeiger auf den Datensatz mit dem aktuellem Datum springen (dafür habe ich ja den Wertesatz mit $currentDate = date("Ymd"); eingefügt). Mit next der folgende Datensatz ermittelt und ausgegeben und evtl. nochmal mit next der zweite folgende Datensatz.

Habe schon mehrere Skripte zum Suchen bzw. Pointer setzen ohne Erfolg ausprobiert, die meisten Befehle für zweidimensionale Arrays ausgelegt sind.


Beispiel vom bestehenden/funktionierendem Teil:
PHP:
$data[] = array('Event_Date' => $e01, 'Event_Name' => $e01t, 'Event_Pre' => "A");
$data[] = array('Event_Date' => $e02, 'Event_Name' => $e02t, 'Event_Pre' => "B");
$data[] = array('Event_Date' => $e03, 'Event_Name' => $e03t, 'Event_Pre' => "B");
$data[] = array('Event_Date' => $currentDate, 'Event_Name' => "AktuellesDatumFuerVergleich", 'Event_Pre' => "1");


foreach ($data as $key => $row) {
    $Event_Date[$key]    = $row['Event_Date'];
    $Event_Name[$key] = $row['Event_Name'];
}

array_multisort($Event_Date, SORT_ASC, $Event_Name, SORT_ASC, $data);

Bin ich mit meiner grundsätzlichen Überlegung überhaupt auf dem richtigen Weg?
Kann mir bitte jemand weiterhelfen, wie spreche ich nun die Werte an?



Gruß Karl



PS: Bin in PHP eher ein Beginner
 
Ich arbeite eigentlich nie mit dem Zeiger (next(), current() etc.). Eher teile ich Arrays auf.
Aber so kannst du den Zeiger auf ein Element setzen das dem aktuellen Datum entspricht
PHP:
//Zeiger zurücksetzen
reset($data);

//Zeiger jeweils einen weitergehen bis false zurückkommt (keine weiteren Elemente mehr im Array)
while(($val = next($data)) !== false){
    //Falls das Element dem gesuchten aktuellen Datum entspricht, die Schleife abbrechen
    if($val['Event_Date'] == $currentDate) break;
}

//Element auf dem der Zeiger steht auslesen
$current = current($data);
echo $current['Event_Date'];
 
Zurück