Array aufteilen
Flo
- php
Hi!
Ich habe ein Array, welches ich nach bestimmten Merkmalen aufteilen.
Mein Array sieht in etwa so aus: BIO1, BIO2, DE1, DE2, DE3, DE4, DE5, EN1, EN2, EN3, EN4, FR1, GE1, GE2, MA1, MA2, MA3, MA4, PH1, PH2, PH3, de1, de2, de3, de4, en1, en2, en3, geo4, geo5, geo6, geo7, gk1, gk2, inf1, inf2, inf3, inf4, s1, s2, s3, s4, s6, s7, s8, s9, s10, s11
Nun möchte ich das Array nach Fächern in mehrere kleinere Arrays aufteilen, damit am Ende foldendes herauskommt:
Array 1: BIO1, BIO2
Array 2: DE1, DE2, DE3, DE4, DE5
usw.
Gibt es dafür eine Funktion? Wie könnte ich das lösen?
Gruß Flo
Grüße,
array sortieren
array durchlaufen,
da fächeranzahl und abkürzungen bekannt sind zB stripos einsetzen
je nach treffer den aktuellen way in einen anderen array kopieren.
MFG
bleicher
je nach treffer den aktuellen way in einen anderen array kopieren.
Was ist ein way??? Außerdem, wie kann ich mit einer strpos-Abfrage alle Fächer bedienen???
Gruß Flo
Grüße,
Was ist ein way??? Außerdem, wie kann ich mit einer strpos-Abfrage alle Fächer bedienen???
typo - "wert"
alternativ kannst du die ersten 1-2 zeichen schneiden und per switch verarbeiten.
von "einfach" und "iner" abfrage kann bei so einem ungünstigen array keine rede sein.
MFG
bleicher
Hello,
Ich habe ein Array, welches ich nach bestimmten Merkmalen aufteilen
möchte?
Mein Array sieht in etwa so aus: BIO1, BIO2, DE1, DE2, DE3, DE4, DE5, EN1, EN2, EN3, EN4, FR1, GE1, GE2, MA1, MA2, MA3, MA4, PH1, PH2, PH3, de1, de2, de3, de4, en1, en2, en3, geo4, geo5, geo6, geo7, gk1, gk2, inf1, inf2, inf3, inf4, s1, s2, s3, s4, s6, s7, s8, s9, s10, s11
Stellt sich die Frage, wer ein so bescheuertes Array aufgebaut hat.
Hier wurden Relationen litereal verschlüsselt.
Das willst Du nun also wieder rückgängig machen.
Dann muss Dein Array nachher aher so aussehen:
Array 1: ['BIO'][1]['Freitag, 10:00']
['BIO'][1]['Montag, 08:50']
['BIO'][2] ...
['DE'][1] ...
['DE'][2] ...
['DE'][3] ...
['DE'][4] ...
Da es hier 'nur' um die Trennung von Buchstabenketten von Ziffernketten geht bei einer Trennstelle, sollten zwei einfache Funktionen dafür ausreichen.
Eine ist fertig und heißt substr(), left(), oder right()
die andere muss nur die Position der ersten Ziffer im String finden
function get_first_numaral_pos($literal)
{
$strlen = strlen($literal);
$pos = 0;
while ($pos < $strlen) // oder auch als for-Schleife...
{
if (ord($literal[$pos]) >= 48 and ord($literal[$pos]) <= 57)
{
return $pos;
$pos++;
}
}
return false;
}
und dann beschaffst Du dir mittels der beiden Funktionen den Alpha- und den Numeral-Anteil des Literals und baust damit deine Array-Elemente auf.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hi!
Du hast meine Frage sicher etwas falsch verstanden.
Das Array, welches ich Trennen möchte, soll nicht extra nochmal nach Nummern aufgetrennt werden, sondern die Fächer sollen geordnet so am Ende getrennt sein, dass ich bspw. eine Ausgabe machen kann wie:
Biologie-Leistungskurse
BIO1
BIO2
BIO3
Deutsch-Leistungskurse
DE1
DE2
DE3
DE4
Deutsch-Grundkurse
de1
de2
de3
usw...
Hello,
Du hast meine Frage sicher etwas falsch verstanden.
Das Array, welches ich Trennen möchte, soll nicht extra nochmal nach Nummern aufgetrennt werden, sondern die Fächer sollen geordnet so am Ende getrennt sein, dass ich bspw. eine Ausgabe machen kann wie:Biologie-Leistungskurse
BIO1
BIO2
BIO3Deutsch-Leistungskurse
DE1
DE2
DE3
DE4Deutsch-Grundkurse
de1
de2
de3usw...
Du hast meine Antwort sicherlich verkehrt verstanden.
Um die Aufteilung vornehmen zu können, musst Du entweder die (Teil-)Signaturen der Kurse bereits kennen und so vorgehen, wie es Bleicher Dir bereits vorgeschlagen hat, oder Du musst sie noch ermitteln. Wenn Du sie noch ermitteln musst, musst Du die Daten erst separieren, sodass sie atomar vorliegen und nicht integriert.
Wie Du dann aus den atomarisierten Daten eine Ausgabe erzeugst, bleibt wieder Dir überlassen. Zusammenlegen kann man immer leicht, auseinandernehmen nicht, wie Du ja selber siehst.
Für die Vorgehensweise nach Bleicher benötigst Du nur ein Array mit den Gruppennamen:
$_gruppe = array('BIO','DE','de');
dass Du dann als Vorlage benutzt für die Filterung im anderen Array.
Du könntest nun das Gruppenarray mit foreach durchlaufen und das für jeden Durchlauf auch das Gesamtarray durchlaufen.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg