Ankündigung

Einklappen
Keine Ankündigung bisher.

array verarbeitung (schlag auf den hinterkopf)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • array verarbeitung (schlag auf den hinterkopf)

    hallo zusammen
    ich hab ein denkproblem und bekomme es nicht gebacken mir das array zurecht zu legen
    die basis ist ein array ca so
    Code:
    Array
    (
        [0] => wert 1 – 1  //start erstes array
        [1] => wert 2 - 1
        [2] => wert 3 - 1
        [3] => wert 4 - 1
        [4] => wert 1 – 2	//start zweites array
        [5] => wert 2 – 2
        [6] => wert 3 - 2
        [7] => wert 2 - 2
        [8] => wert 1 – 3	//start drittes array
        [9] => wert 2 - 3
        [10] => wert 3 - 3
        [11] => wert 4 - 3
        [12] => wert 1 – 4	//vier…
        [13] => wert 2 - 4
        [14] => wert 4 - 4
        [15] => wert 5 – 4
    
    ... usw ...
    }
    theoretisch simpel immer vier einträge in ein neues array gesplittet mit einem zb ;

    Code:
    Array
    (
    	[0] => wert 1 – 1;wert 2 – 1;wert 3 – 1;wert 4 - 1  
    	[1] => wert 1 – 2;wert 2 – 2;wert 3 – 2;wert 4 – 2
    ... usw ...
    }
    sorry aber ich rall es nicht leider hab hier jetzt keine meiner versucher es waren aber einige
    und es kamen die wüstesten ergebnisse raus (ist wahrscheinlich eh besser das ihr die nicht seht )

    joa nun zur frage wie verschachtel ich die schleife das so ein ergebnis entsteht?

    THX
    MfG da.bert


  • #2
    Code:
    $sourceArray = array(); // dein Quellarray
    $sourceArrayLength = count($sourceArray); // die Größe des Quellarrays
    $targetArray = array(); // das Ergebnisarray
    $step = 4; // die Schrittweite
    for($i = 0; $i < $sourceArrayLength; $i++) {
        $targetArray[(int)($i / $step)] .= $sourceArray[$i];
    }
    ACHTUNG: Das ist nur die Logik! Du musst natürlich in der Schleife erstmal das Element mit dem entsprechenden Index in $targetArray initialisieren, bevor du einen String hinzufügst. Des Weiteren noch die Strichpunkte einbauen.

    NICHT GETESTET!

    Kommentar


    • #3
      WOW BIG THX!!!

      öhm also ich hab schon paar bücher gelesen aber so eine deklaration hab ich noch nie gesehen!
      Code:
      $targetArray[(int)($i / $step)]
      könntest du das kurz erklähren?

      quasi i durch stepp muss eine ganzzahl sein dann nim das ergebnis als neuen index?

      Kommentar


      • #4
        Klar

        Die Schrittweite ist in unserem Fall 4, d.h. dass sich der Index des Zielarrays nur alle 4 Schleifendurchläufe um 1 erhöhen soll. Also teilen wir den Iterator $i durch 4 und erhalten bei den ersten vier Durchläufen - in denen $i von 0 bis 3 geht - einen Wert von 0,..., bei Durchlauf fünf bis acht einen Wert von 1,... usw.. Ein Index muss aber eine Ganzzahl sein, deshalb casten wir den Wert noch nach int, was die Kommastellen einfach abschneidet.

        Kommentar


        • #5
          (int) dürfte das selbe wie floor(..), also Abrunden bewirken. Zumindest ist das bei C++ glaube ich so.

          Kommentar


          • #6
            int rundet nicht, int kennt einfach keine Nachkommastellen

            Kommentar


            • #7
              Zitat von Saraneus
              int rundet nicht, int kennt einfach keine Nachkommastellen
              Ich sag ja, es bewirkt das selbe

              Kommentar


              • #8
                :P

                Kommentar


                • #9
                  Zitat von Saraneus
                  ... was die Kommastellen einfach abschneidet.
                  lol ist genial!
                  einfach abschneiden^^
                  ich hab u.a. mit $sourceArrayLength % 4 und dann mit if … rumexperimentiert
                  aber da ist der übelste code entstanden.

                  also noch mal danke … so einfach kann es sein wenn man weiß wie es geht

                  Kommentar


                  • #10
                    Das ist erstmal nur Mathematik. Oft hilft's, auf einem Papier die Fälle durchzugehen

                    Kommentar

                    Lädt...
                    X