Dirk E.: unset(); Wert in array löschen

Hallo,

ich habe ein kleines Problemchen... Ich möchte 3 Werte ($array_liste2) aus dem $array_liste1 löschen. Das heißt ich muß überprüfen ob der Wert im array_liste1 vorhanden ist und wenn ja muß der Schlüssel mit Wert glöscht werden.

Nur in meinem Script löscht er nichts ich weiß nicht wo der Fehler ist?

$liste1   = "3;4;5;11;77;33;12;106;107";
$liste2   = "11;12;106"; // diese Werte sollen aus liste1 oder auch $array_liste2 gelöscht werden

$array_liste1 = array();
$array_liste2 = array();

$array_liste1 = explode(';', $liste1);
$array_liste2 = explode(';', $liste2);

$anzahl = count($array_liste2);

foreach($array_liste1 as $liste)
 {
   if (in_array($liste,$array_liste2))
    {
 for ($i=0; $i <= $anzahl; $i++)
  {
  echo $array_liste2[$i] . "<br>";
  $loesche = $array_liste2[$i];
  #echo $loesche."<br>";
  unset($array_liste1[$loesche]);
  }
 break;
 }
 }

print_r($array_liste1);

@Gruß Dirk

  1. Hi,

    Das heißt ich muß überprüfen ob der Wert im array_liste1 vorhanden ist und wenn ja muß der Schlüssel mit Wert glöscht werden.

    dazu gibt es die Funktion array_diff() (http://de3.php.net/manual/de/function.array-diff.php). Du musst nur beachten, dass die Schlüssel des Arrays erhalten bleiben, möchtest du das nicht, kannst du array_values() (http://de3.php.net/manual/de/function.array-values.php) verwenden, z.B.:

    <?php

    $arr_1 = array(1, 2, 3, 4, 5);
    $arr_2 = array(1, 3);

    $arr_new = array_values(array_diff($arr_1, $arr2)); // das sollte jetzt == array(2, 4, 5) sein.

    ?>

    Gruß,
    Andreas.

    1. $arr_new = array_values(array_diff($arr_1, $arr2)); // das sollte jetzt == array(2, 4, 5) sein.

      Hi!

      ja das funktioniert wunderbar!

      Nur auf array_values(); wäre ich nie drauf gekommen. Es scheint so als ob er den Wert von array_diff($arr_1, $arr2); in ein neues array geschrieben wird.

      Das war mir erst auch nicht so ersichtlich (http://de3.php.net/manual/de/function.array-values.php) Ich habe es ehrlich gesagt anders verstanden...

      Ich bin jeden Tag aufs neue erstaunt was alles geht ;-)

      Danke!

  2. Hallo!

    ich habe ein kleines Problemchen... Ich möchte 3 Werte ($array_liste2) aus dem $array_liste1 löschen. Das heißt ich muß überprüfen ob der Wert im array_liste1 vorhanden ist und wenn ja muß der Schlüssel mit Wert glöscht werden.

    Werf mal einen Blick auf die Array-Funktionen: http://de3.php.net/manual/de/ref.array.php (das ist im übrigen immer eine gute Idee, Du siehst ja dass es da ne Menge fertige Funktionen  gibt ;-))

    da findest Du die Funktion "array_diff -- Ermittelt die Unterschiede von Arrays", die genau das in einer Zeile macht was Du in der Schleife versuchst ;-)

    Grüße
    Andreas