3065 Stimmen

Löschen eines Elements aus einem Array in PHP

Gibt es eine einfache Möglichkeit, ein Element aus einem Array mit PHP zu löschen, so dass foreach ($array) dieses Element nicht mehr enthält?

Ich dachte, dass die Einstellung auf null würde es tun, aber offenbar funktioniert es nicht.

17 Stimmen

Ich würde nicht sagen, dass Konrads Antwort die einfachste auf das genannte Problem ist. Mit unset() werden die Iterationen über das Array den entfernten Wert nicht mehr enthalten. OTOH, es ist wahr, dass Stevan Antwort ist reichlich und, tatsächlich, war die Antwort, die ich gesucht habe - aber nicht die OP :)

48 Stimmen

@danip Dass es im Handbuch leicht zu finden ist, schließt eine Frage auf StackOverflow nicht aus. Wäre die Frage eine duplicado StackOverflow-Frage, dann gehört sie vielleicht nicht hierher. StackOverflow ist ein guter Ort, um Antworten zu finden, noch bevor Sie im Handbuch nachsehen.

7 Stimmen

@unset($array[$key]); $array = array_values($array);

77voto

DefenestrationDay Punkte 3433

Auch für ein benanntes Element:

unset($array["elementName"]);

75voto

Robin Nixon Punkte 711

Wenn Sie ein numerisch indiziertes Array haben, in dem alle Werte eindeutig sind (oder sie sind nicht eindeutig, aber Sie möchten alle Instanzen eines bestimmten Wertes entfernen), können Sie einfach array_diff() verwenden, um ein übereinstimmendes Element zu entfernen, etwa so:

$my_array = array_diff($my_array, array('Value_to_remove'));

Zum Beispiel:

$my_array = array('Andy', 'Bertha', 'Charles', 'Diana');
echo sizeof($my_array) . "\n";
$my_array = array_diff($my_array, array('Charles'));
echo sizeof($my_array);

Es wird Folgendes angezeigt:

4
3

In diesem Beispiel wird das Element mit dem Wert "Charles" entfernt, wie durch die sizeof()-Aufrufe überprüft werden kann, die eine Größe von 4 für das ursprüngliche Array und 3 nach dem Entfernen melden.

40voto

KTAnj Punkte 1328

Ein einzelnes Element eines Arrays zerstören

unset()

$array1 = array('A', 'B', 'C', 'D', 'E');
unset($array1[2]); // Delete known index(2) value from array
var_dump($array1);

Die Ausgabe wird sein:

array(4) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "B"
  [3]=>
  string(1) "D"
  [4]=>
  string(1) "E"
}

Wenn Sie das Array neu indizieren müssen:

$array1 = array_values($array1);
var_dump($array1);

Dann wird die Ausgabe sein:

array(4) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "B"
  [2]=>
  string(1) "D"
  [3]=>
  string(1) "E"
}

Das Element am Ende des Arrays ausblenden - den Wert des entfernten Elements zurückgeben

mixed array_pop(array &$array)

$stack = array("orange", "banana", "apple", "raspberry");
$last_fruit = array_pop($stack);
print_r($stack);
print_r('Last Fruit:'.$last_fruit); // Last element of the array

Die Ausgabe wird sein

Array
(
    [0] => orange
    [1] => banana
    [2] => apple
)
Last Fruit: raspberry

Das erste Element (rot) aus einem Array entfernen , - Rückgabe des Wertes des entfernten Elements

mixed array_shift ( array &$array )

$color = array("a" => "red", "b" => "green" , "c" => "blue");
$first_color = array_shift($color);
print_r ($color);
print_r ('First Color: '.$first_color);

Die Ausgabe wird sein:

Array
(
    [b] => green
    [c] => blue
)
First Color: red

39voto

<?php
    $stack = ["fruit1", "fruit2", "fruit3", "fruit4"];
    $fruit = array_shift($stack);
    print_r($stack);

    echo $fruit;
?>

Ausgabe:

[
    [0] => fruit2
    [1] => fruit3
    [2] => fruit4
]

fruit1

32voto

Ahmad Mobaraki Punkte 5615

Wenn der Index angegeben ist:

$arr = ['a', 'b', 'c'];
$index = 0;    
unset($arr[$index]);  // $arr = ['b', 'c']

Wenn wir Wert anstelle von Index haben:

$arr = ['a', 'b', 'c'];

// search the value to find index
// Notice! this will only find the first occurrence of value
$index = array_search('a', $arr);

if($index !== false){
   unset($arr[$index]);  // $arr = ['b', 'c']
}

El if Bedingung ist notwendig denn wenn index wird nicht gefunden, unset() wird automatisch gelöscht das erste Element des Arrays, was nicht erwünscht ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X