Ilja: elemente in einem array löschen

hi,

ich habe ein einfaches array zum beispeil in folgender form:

$feld[0]=wert1;
$feld[1]=wert2;
$feld[2]=wert3;
$feld[3]=wert4;
$feld[4]=wert5;

mein problem ist nun, dass ich gerne ein bestimmtes element innerhalb des arrays löschen will, zum beispiel das element $feld[3]. ich habe aber nur funktionen gefunden, die das erste oder letzte element aus einem feld löschen. hat jemand eine idee, ausser vielleicht das element an die letzte stelle zu rücken und dann zu löschen ?

Ilja

  1. hi,

    ich habe ein einfaches array zum beispeil in folgender form:

    $feld[0]=wert1;
    $feld[1]=wert2;
    $feld[2]=wert3;
    $feld[3]=wert4;
    $feld[4]=wert5;

    mein problem ist nun, dass ich gerne ein bestimmtes element innerhalb des arrays löschen will, zum beispiel das element $feld[3]. ich habe aber nur funktionen gefunden, die das erste oder letzte element aus einem feld löschen. hat jemand eine idee, ausser vielleicht das element an die letzte stelle zu rücken und dann zu löschen ?

    so vielleicht:
    weiss nicht ob die arrayübergaben stimmen, aber es muss ja auch sicherlich keine Funktion sein!?
    $i ist die stelle wo gelöscht werden soll

    function loeschen($feld, $i) {
     for($j=$i; $j<(count($feld)-1); $j++) {
      $feld[$j] = $feld[$j+1];

    }
     return $feld;

    }

    Ilja

    hih

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    1. hi romy,

      so vielleicht:
      weiss nicht ob die arrayübergaben stimmen, aber es muss ja auch sicherlich keine Funktion sein!?
      $i ist die stelle wo gelöscht werden soll

      function loeschen($feld, $i) {
       for($j=$i; $j<(count($feld)-1); $j++) {
        $feld[$j] = $feld[$j+1];

      }
       return $feld;

      }

      ich kann nicht erkennen, wie bei deiner funktion das $i-element aus einem feld gelöscht wird. wenn zum beispiel $i=3 ist und das feld aus 4 elementen besteht, geht es doch gar nicht erst in die schleife rein ?

      Ilja

      1. hi romy,

        so vielleicht:
        weiss nicht ob die arrayübergaben stimmen, aber es muss ja auch sicherlich keine Funktion sein!?
        $i ist die stelle wo gelöscht werden soll

        function loeschen($feld, $i) {
        for($j=$i; $j<(count($feld)-1); $j++) {
          $feld[$j] = $feld[$j+1];

        }
        return $feld;

        }

        ich kann nicht erkennen, wie bei deiner funktion das $i-element aus einem feld gelöscht wird. wenn zum beispiel $i=3 ist und das feld aus 4 elementen besteht, geht es doch gar nicht erst in die schleife rein ?

        das ist wahr, sorry, wollte es sauber machen
        function loeschen($feld, $i) {
        for($j=$i; $j<=count($feld); $j++) {
         if($feld[$j+1]) {
          $feld[$j] = $feld[$j+1];
         }

        }
         return $feld;

        }
        das Problem ist, wenn es $j+1 nicht gibt, weil es ja schon ausserhalb ist
        hatte nicht mitgedacht und wollte es so wie oben lösen
        also muss noch ne if-Abfrage rein, aht aber immernoch das Problem, dass es auch bei 0 abbricht, naja
        nimm wohl besser das andere Angebot, ich habe glaube ich gerade selber ein Brett vorm kopf man müsste prüfen können ob es die Arraystelle überhaupt gibt

        tut mir leid, wenn ich dir nicht helfen konnte
        ciao
        romy

        Ilja

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    2. Hallo,

      ich habe ein einfaches array zum beispeil in folgender form:

      $feld[0]=wert1;
      $feld[1]=wert2;
      $feld[2]=wert3;
      $feld[3]=wert4;
      $feld[4]=wert5;

      mein problem ist nun, dass ich gerne ein bestimmtes element innerhalb des arrays löschen will,

      Das geht ganz einfach mit unset($feld[3]);

      Danach sieht Dein Array dann so aus:
      $feld[0]=wert1;
      $feld[1]=wert2;
      $feld[2]=wert3;
      $feld[4]=wert5;

      Wenn Du jetzt $feld[3]="neuer Wert"; schreibst, dann wird das neue alte Element hinten angehängt:

      $feld[0]=wert1;
      $feld[1]=wert2;
      $feld[2]=wert3;
      $feld[4]=wert5;
      $feld[3]="neuer Wert";

      Das kannst du testen mit
      foreach($feld as $zeile){ echo $zeile }

      Grüße

      Tom

  2. Hallo

    ich habe ein einfaches array zum beispeil in folgender form:

    $feld[0]=wert1;
    $feld[1]=wert2;
    $feld[2]=wert3;
    $feld[3]=wert4;
    $feld[4]=wert5;

    mein problem ist nun, dass ich gerne ein bestimmtes element innerhalb des arrays löschen will, zum beispiel das element $feld[3]. ich habe aber nur funktionen gefunden, die das erste oder letzte element aus einem feld löschen. hat jemand eine idee, ausser vielleicht das element an die letzte stelle zu rücken und dann zu löschen ?

    Ilja

    Neben den anderen, genannten Möglichkeiten wäre da noch
    array_splice($feld,$i,1);
    wobei $i die Nummer des Arrayindexes ist.
    So könntest du auch den Inhalt des Elementes gegen einen
    anderen Inhalt austauschen.

    http://www.php.net/manual/de/function.array-splice.php
    http://www.selfphp.info/funktionsreferenz/array_funktionen/array_splice.php

    Tschö, Auge