Usuwanie elementów tablic w PHP

Operacje na tablicach są niezwykle trudne. Jak usunąć element?

Opis problemu

Chcę usunąć rekord z tabeli w PHP. Wiem, że istnieje wiele możliwości. Jak mam to zrobić?

Rozwiązanie problemu

Istnieją różne sposoby usuwania elementu tablicy, przy czym niektóre z nich są bardziej przydatne do niektórych określonych zadań niż inne.

Usuń jeden element tablicy

Jeśli chcesz usunąć tylko jeden element tablicy, możesz użyć unset() lub alternatywnie array_splice().

Również jeśli masz wartość i nie znasz klucza do usunięcia elementu, możesz użyć array_search(), aby uzyskać klucz.

Metoda unset()

Zauważ, że kiedy użyjesz unset(), klucze tablicy nie zmienią się i nie zaindeksują się ponownie. Jeśli chcesz ponownie zindeksować klucze, możesz użyć array_values() po unset(). Metoda ta przekonwertuje wszystkie klucze na numeryczne klucze zaczynające się od 0.


 „a”, 1 => „b”, 2 => „c”];
    unset($array[1]);

Metoda array_splice()

Jeśli użyjesz array_splice(), klucze zostaną automatycznie ponownie zindeksowane, ale klucze asocjacyjne nie zmienią się w przeciwieństwie do array_values(), która przekonwertuje wszystkie klucze na klucze numeryczne.

Również array_splice() potrzebuje przesunięcia, a nie klucza! jako drugi parametr.


 „a”, 1 => „b”, 2 => „c”];
    array_splice($array, 1, 1);

array_splice() tak samo jak unset() przekonwertuje tablicę przez odniesienie, a to oznacza, że nie chcesz przypisywać zwracanych wartości tych funkcji z powrotem do tablicy.

Usuwanie wielu elementów tablicy

Jeśli chcesz usunąć wiele elementów tablicy i nie chcesz wielokrotnie wywoływać unset() lub array_splice(), możesz użyć funkcji array_diff() lub array_diff_key() w zależności od tego, czy znasz wartości, czy klucze elementów, które chcesz usunąć.

Metoda array_diff()

Jeśli znasz wartości elementów tablicy, które chcesz usunąć, możesz użyć array_diff (). Tak jak poprzednio z unset(), array_diff() nie zmieni i nie zindeksuje kluczy tablicy.



 „a”, 1 => „b”, 2 => „c”];
    $array = array_diff($array, ["a", "c"]);

Metoda array_diff_key()

Jeśli znasz klucze elementów, które chcesz usunąć, to chcesz użyć array_diff_key(). W tym przypadku musisz się upewnić, że przekazujesz klucze jako klucze w drugim parametrze, a nie wartości. W przeciwnym razie musisz odwrócić tablicę za pomocą array_flip(). Także tutaj klucze się nie zmienią .



 „a”, 1 => „b”, 2 => „c”];
    $ array = array_diff_key($array, [0 => "xy", "2" => "xy"]);

Również jeśli chcesz użyć unset() lub array_splice() do usunięcia wielu elementów o tej samej wartości, możesz użyć array_keys(), aby uzyskać wszystkie klucze dla określonej wartości, a następnie usunąć wszystkie elementy.