Tach!
- Findet ihr das Schulbeispiel passt? Gibt's bessere Ideen?
Tiere gehen auch immer.
- Untenstehend ein paar Beispiele für mögliche Beispiele 1. Ordnung. Welches ist am verständlichsten? Welches ist nicht so gut? Habt ihr andere Vorschläge? Mein Problem ist einfach, wie kann ich das einigermaßen einheitlich über die drei Ordnungen hinkriegen und auch so, dass es ein Laie versteht!? Es gibt einfach viel zu viele Möglichkeiten...
Erst was ganz einfaches, dann kann auch was komplexeres in einem nächsten Abschnitt folgen.
// Wenn die Daten wie hier nicht sortiert vorliegen, müssen diese nach ihrer Gruppe sortiert werden.
Das sollte einfach Voraussetzung sein und nur erwähnt werden (vielleicht hervorgehoben). Eine Sortierung selbst muss nicht gezeigt werden, besonders nicht mit so einer umstrittenen Funktion wie array_multisort(). Die Beispieldaten können ruhig (erkennbar) sortiert vorliegen.
array_multisort($schueler);
Das sortiert zwar augenscheinlich wie gewünscht, aber der Fall "Sortieren eines Arrays mit Datensatz-Arrays" ist im PHP-Handbuch gar nicht erwähnt. Da steht, dass man das Zeilen-Array erstmal zu einem Spalten-Array umformen muss.
- Vorschlag 1: Vollständiges Beispiel
Muss das mit zwei verschachtelten for-Schleifen ablaufen? Geht das nicht auch einfacher mit foreach zu lösen?
- Vorschlag 2
- Vorteil: Nur eine Schleife
- Nachteil: Aufteilung Gruppenvor-, -durch-, und -nachlauf nicht klar ersichtlich; einiges doppelt; einfach erweiterbar
Das bekommt man auch ohne Dopplungen hin.
$schule = $schueler[0]['schule']; $namenDerSchueler = array(); $namenDerSchueler[] = $schueler[0]['name']; $anzahlDerSchueler = 1;
Lediglich $schule muss mit einem nicht vorkommenden Wert initialisiert werden, beispielsweise null. Der erste Datensatz erzeugt daraufhin gleich einen Gruppenwechsel von nichts in die erste Gruppe. Es reicht, wenn dann die gruppenspezifischen Initialisierungen stattfinden.
Der Fall ist der einfachste. Wenn nur vor einer Gruppe etwas ausgegeben werden muss, ist der sehr gut geeignet. Wenn eine Gruppe auch noch abgeschlossen werden muss, ist das vor der Gruppen-Initialisierung zu tun. Auf den ersten Pseudo-Wechsel wäre zu prüfen und dann der Abschluss zu unterlassen. Am Ende sollte auch noch ein Abschluss stattfinden - na gut, dann bekommt man da eine Dopplung rein.
- Vorschlag 3 $schulenSortiert[$schueler[$i]['schule']]['anzahl'] = 0;
Wenn du schon ein verschachteltes/gruppiertes Array anlegst, kannst du auch mit count() zählen.
dedlfix.