foreach liefert falsche schlüssel?

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

  • foreach liefert falsche schlüssel?

    guten tag, guten abend

    ich hab hier ein kleines prooblem bei dem ich hilfe benötige
    und zwar handelt es sich um die liebe foreach schleife
    von der ich mir gedacht hatte das sie eigentlich jeden
    schlüssel bzw jedes element eines arrays ausgeben kann.
    nun hab ich leider einen fall bei dem das nciht so ganz zutrifft

    ich habe eine 2 dimensionales array
    wobei die lemente der zweiten dimension jetzt nocht so eine rolle spielen, es geht mehr um die erste. ich weiss nicht obs wirklich daran liegt das es 2d ist, ich glaub eher nicht, aber trozdem:

    $test[0][0], $test[0][1], $test[0][2], $test[0][3]
    $test[1][0], $test[1][1], $test[1][2], $test[1][3]
    $test[2][0], $test[2][1], $test[2][2], $test[2][3]
    $test[3][0], $test[3][1], $test[3][2], $test[3][3]
    $test[4][0], $test[4][1], $test[4][2], $test[4][3]

    nun mache ich folgendes:

    unset($test[1]); unset($test[2]); unset($test[3]);

    wenn ich dieses array jetzt mit einer foreach schleife
    durchlaufen würde, würde ich folgende schlüssel bekommen:
    0, 1 anstatt von 0 und 4

    gibt es eine möglichkeit die an die "richtigen" schlüssel ranzukommen? oder das array neu nummeruisch zu indizieren, sodass aus:
    $test[0][0], $test[0][1], $test[0][2], $test[0][3]
    $test[4][0], $test[4][1], $test[4][2], $test[4][3]

    das hier wird:
    $test[0][0], $test[0][1], $test[0][2], $test[0][3]
    $test[1][0], $test[1][1], $test[1][2], $test[1][3]

    dabei gilt
    $test[4][0] = $test[1][0], $test[4][1] = $test[1][1], ...

    danke für eure aufmerksamkeit

    lg
    alex

  • #2
    wie sieht denn Deine foreach aus?
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Ich würde sagen indem Du ein temporäres Array in Deiner foreach Schleife mit den Keys die übernommen werden dürfen mitschleifst und nach beendeter foreach Schleife das eigentliche Array durch dieses temporäre Array ersetzt:
      PHP-Code:
      /*
      $test[0][0], $test[0][1], $test[0][2], $test[0][3]
      $test[1][0], $test[1][1], $test[1][2], $test[1][3]
      $test[2][0], $test[2][1], $test[2][2], $test[2][3]
      $test[3][0], $test[3][1], $test[3][2], $test[3][3]
      $test[4][0], $test[4][1], $test[4][2], $test[4][3]
      */

      $arr_tmp = array();
      foreach ( 
      $test as $k => $arr )
      {
        if ( 
      Ausdruck )
          
      array_push($arr_tmp$arr);

      Die Schleife durchläuft dein Array und du musst ja irgendeine Abfrage in dieser Schleife haben und wenn diese Abfrage zutrifft dann hängt die Funktion array_push ein Index an das temporäre Array an.

      Kommentar


      • #4
        danke reallife, gute idee mit noch einem array
        ich glaub ich denk hin und wieder zu kompliziert..

        Kommentar

        Lädt...
        X