Flo: Array aufteilen

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

  1. 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

    --
    __________________________-
    Die versprechen ernsthaft werbefreien hosting?
    1. 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

      1. 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

        --
        __________________________-
        Die versprechen ernsthaft werbefreien hosting?
  2. 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

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. 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...

      1. 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
        BIO3

        Deutsch-Leistungskurse
        DE1
        DE2
        DE3
        DE4

        Deutsch-Grundkurse
        de1
        de2
        de3

        usw...

        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

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de