alex: array

Hallo,

mal schauen, ob mir jemand schnell mit meinem banalen problem weiterhelfen kann.

nach generieren eines arrays von gefilterten daten aus einer db habe ich folgendes vereinfachtes resultat:

Array ( [75] => xxx ; [79] => yyy )

kann ich den index in meinem ergebnisarray irgendwie wieder von "0" anfangen lassen? würde die "75" und "79" gern loswerden und einen neuen "reinen" array haben...

Danke Alex

  1. das geht mit

    reset(array);

    1. hab jetzt mal direkt vor mein "print_r" ein "reset" gesetzt,

      aber einen anderen index hab ich leider nicht...

  2. Huhu Alex

    mal schauen, ob mir jemand schnell mit meinem banalen problem weiterhelfen kann.

    eine Lösung wäre

    $arr_neu = array_values($arr_alt);

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Hi lulu,

      eine Lösung wäre

      $arr_neu = array_values($arr_alt);

      DANKE - das mit array_values war genau das was ich gesucht hatte!

      Gruß Alex

  3. Hi,

    schau Dir mal die Funktionen array_slice() und array_splice() an. Besonders die zweite ist Dein Freund:

    array_splice($arr,0,0);

    müsste hoffentlich das leisten, was du brauchst.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
    1. Hallo nochmal,

      hier ein Beispiel:

      <?php ### array_index ###

      $feld=array();

      $feld[1]="Eins";
      $feld[4]="Vier";
      $feld[77]="Siebenundsiebzig";

      echo "<pre>";
      print_r($feld);
      echo "</pre>";

      array_splice($feld,0,0);

      echo "<pre>";
      print_r($feld);
      echo "</pre>";

      ?>

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
      1. Hi Tom,

        Spielkind... ;-)

        hier ein Beispiel:
        <?php ### array_index ###

        $feld=array();

        $feld[1]="Eins";
        $feld[4]="Vier";
        $feld[77]="Siebenundsiebzig";

        echo "<pre>";
        print_r($feld);
        echo "</pre>";

        array_splice($feld,0,0);

        echo "<pre>";
        print_r($feld);
        echo "</pre>";

        ?>

        Idee... wäre es schneller das von einer foreach-Schleife mit "selbstindizierung" machen zu lassen? etwa so:

        $array[97] = "q";
        $array[98] = "blah";
        $array[27354] = "muh";
        foreach($array as $wert)
        {
        global $neuarray[] = $wert;
        }
        $array = $neuarray;
        echo "<pre>";
        print_r($array);
        echo "</pre>";

        Fabian

        1. Hallo,

          hier ein Beispiel für array-reindex:
          <?php ### array_index ###

          $feld=array();

          $feld[1]="Eins";
          $feld[4]="Vier";
          $feld[77]="Siebenundsiebzig";

          echo "<pre>";
          print_r($feld);
          echo "</pre>";

          array_splice($feld,0,0);

          echo "<pre>";
          print_r($feld);
          echo "</pre>";

          ?>

          Idee... wäre es schneller das von einer foreach-Schleife mit "selbstindizierung" machen zu lassen? etwa so:

          $array[97] = "q";
          $array[98] = "blah";
          $array[27354] = "muh";
          foreach($array as $wert)
          {
          global $neuarray[] = $wert;
          }
          $array = $neuarray;
          echo "<pre>";
          print_r($array);
          echo "</pre>";

          Nein. Das wäre garantiert langsamer. PHP ist eine Interpreter-Sprache. Die Verwendung einer fertigen Funktion ist der einer in der Interpretersprache geschriebenen auf jeden Fall vorzuziehen. Es ist zu vermuten, dass die Displacements für die Speicherstrukturen der "Arrays" in der fertigen PHP-Funktion natürlich compiliert sind und nicht erst interpreteiert werden müssen. Sie benötigen daher nur etwa 1/600 der Taktzyklen.

          Außerdem funktioniert foreach in älteren PHP-Versionen (vor 4.2.x) noch nicht fehlerfrei, bei 4.0.4 (wie du ja weißt) weigeret es sich, die üblichen regeln für globale Variablen anzuerkennen.

          Grüße

          Tom