unset(); Wert in array löschen
Dirk E.
- php
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
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.
$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!
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