dedlfix: Mehrere Vorkommen eines Strings in einem Array

Beitrag lesen

echo $begrüßung;

Dazu kannst du deine Daten einerseits nach den Namen sortieren, so dass gleiche Namen hintereinander stehen, und anschließend mit einem so genannten Gruppenwechsel bei der Ausgabe arbeiten. Beim Sortieren des ersten Arrays solltest du die Schlüssel-zu-Wert-Zuordnung beibehalten und anschließend mit foreach (... as $key => $value) darüber laufen. Dann kannst du über den Key auf den Key des Datums im zweiten Feld zugreifen. Wenn sich bei einem Schleifendurchlauf der Name zum vorhergehenden Durchlauf ändert, hast du den Wechsel und schließt die eine Zeile ab und eröffnest die nächste. Diese Vorgehensweise hat den Nachteil, dass du am Ende eine offene Zeile übrig hast oder aber stets testen musst, ob du am Ende angelangt bist.
Jaaaa, das ist es, was ich gesucht habe, super, vielen Dank!
Nur was ich noch nicht ganz verstehe, wie ich diesen Gruppenwechsel untersuchen kann. Kannst du mir bitte dafür evtl noch ein Beispiel posten?

Das schrieb ich ja eigentlich schon. Hier nochmal ausführlich: Du merkst dir am Anfang den ersten Wert. Beim jedem Durchlauf untersuchst du, ob sich der gemerkte Wert zum aktuellen Namen unterscheidet. Das ist dann der Wechsel.

$array = array(1,1,2,3,3); // ein Array mit Beispieldaten  
  
$current = reset($array); // ersten Wert des Arrays ermitteln  
  
echo "<p>\n"; // Eine Ausgabe am Anfang  
foreach ($array as $value) {  
  if ($current != $value) { // wird in diesem Beispiel true bei 2 und bei der ersten 3  
    $current = $value; // neuen aktuellen Wert merken  
    echo "<br>\n"; // Ausgabe, die beim Wechsel erfolgen soll, also zwischen zwei Gruppen stehen soll  
  }  
  echo $value; // Ausgabe des Wertes, zuzüglich weiterer Formatierungen und dergleichen  
}  
echo "</p>\n"; // Eine Ausgabe am Ende

Außerdem war mein letzter Satz aus obigem Zitat nicht richtig. Em Ende findet ja kein Wechsel mehr statt, weil schlicht und einfach nichts mehr kommt, was noch wechseln kann.

Das Umsortieren in diese Form ist nicht sehr schwer. Bei jedem Namen aus Array 1 wird mit isset() nachgeschaut, ob er schon als Key existiert und dann das Datum an das Array angefügt. Wenn nicht, ist ein neues Array mit dem Datum als Element zu erstellen.

Da muss ich jetzt ausprobieren, welche der Varianten für meinen Fall geeigneter ist.

Nachdem ich meinen Irrtum bemerkt habe, denke ich heute, dass die erste Variante diejenige der Wahl sein sollte. Du musst nur die Namen sortieren und kannst dann gleich die Ausgabe vornehmen. Variante zwei erfordert erst ein Umsortieren und das Zwischenspeichern.

Ein typenechter Vergleich mit !== führt zum Ziel.
Das habe ich schon immer falsch gemacht, sorry...

Kein Grund sich bei mir zu entschuldigen :-)

Oh schreibt man üblicherweise zu dem Code immer Kommentare?
Erhöht das nicht "unnötig" (wenns dann mal läuft) die Datengröße?

Du sollst ja nur mehr oder weniger kurze Kommentare und keine Gigabyte-schwere Dokumentation schreiben. Das Ignorieren der Kommentare ist für den Parser kein großes Thema. Der Zeitverlust sollte nicht ins Gewicht fallen. Viel wichtiger ist jedoch ihr Beitrag zum Verständnis, reduziert sie doch die Zeit, die für die Wartung aufgebracht werden muss, und die ist deutlich länger und teurer. Genausogut könntest du deine Variablennamen auf wenige Buchstaben verkürzen wollen. Auch das trägt nicht zum Verständnis und kaum zur Geschwindigkeit bei. Die Datengröße ist auch nicht wichtig, denn das Übertragen zum Server ist ja ein einmaliger Vorgang. Weitere Übertragungen finden ja nicht statt. Der auf dem Server benötigte Plattenplatz ist ebenfalls vernachlässigbar.

echo "$verabschiedung $name";