Menghapus elemen dari array di PHP

Menghapus elemen dari array di PHP

iis

August 4, 2019

Apakah ada cara mudah untuk menghapus elemen dari array menggunakan PHP, sehingga foreach ($ array) tidak lagi menyertakan elemen itu?

Saya pikir bahwa menyetelnya ke null akan melakukannya, tetapi ternyata itu tidak berhasil.

Ada berbagai cara untuk menghapus elemen array, di mana beberapa lebih berguna untuk beberapa tugas tertentu daripada yang lain.

php

Hapus satu elemen array

Jika Anda ingin menghapus hanya satu elemen array, Anda dapat menggunakan \unset() atau sebagai alternatif \array_splice().

Juga jika Anda memiliki nilai dan tidak tahu kunci untuk menghapus elemen, Anda dapat menggunakan \array_search() untuk mendapatkan kunci.

\unset() metode

Perhatikan bahwa ketika Anda menggunakan \ unset () kunci array tidak akan berubah / indeks ulang. Jika Anda ingin memasukkan kembali kunci, Anda dapat menggunakan \ array_values ​​() setelah \ unset () yang akan mengonversi semua kunci menjadi kunci numerik yang dihitung mulai dari 0.

Kode

<? php     $ array = [0 => "a", 1 => "b", 2 => "c"];
\ unset ($ array [1]);
// ↑ Kunci yang ingin Anda hapus
?>

Keluaran

[
[0] => a
[2] => c
]

metode \ array_splice ()

Jika Anda menggunakan \ array_splice () kunci akan secara otomatis diindeks ulang, tetapi kunci asosiatif tidak akan berubah sebagai lawan dari \ array_values ​​() yang akan mengubah semua kunci menjadi kunci numerik.

Juga \ array_splice () membutuhkan offset, bukan kuncinya! sebagai parameter kedua.

Kode

<? php     $ array = [0 => "a", 1 => "b", 2 => "c"];
\ array_splice ($ array, 1, 1);
// ↑ Offset yang ingin Anda hapus
?>

Keluaran

[
[0] => a
[1] => c
]

array_splice () sama dengan \ unset () mengambil array dengan referensi, dan ini berarti Anda tidak ingin menetapkan nilai kembali fungsi-fungsi tersebut kembali ke array.

Hapus beberapa elemen array

Jika Anda ingin menghapus beberapa elemen array dan tidak ingin memanggil \ unset () atau \ array_splice () beberapa kali Anda dapat menggunakan fungsi \ array_diff () atau \ array_diff_key () tergantung pada apakah Anda mengetahui nilai atau tombolnya. elemen yang ingin Anda hapus.

metode \ array_diff ()

Jika Anda tahu nilai-nilai elemen array yang ingin Anda hapus, maka Anda dapat menggunakan \ array_diff (). Seperti sebelumnya dengan \ unset () itu tidak akan mengubah / mengindeks kembali kunci array.

Kode

<? php     $ array = [0 => "a", 1 => "b", 2 => "c"];
$ array = \ array_diff ($ array, ["a", "c"]);
// └────────┘ → Array nilai yang ingin Anda hapus
?>

Keluaran

[
[1] => b
]

metode \ array_diff_key ()

Jika Anda tahu kunci elemen yang ingin Anda hapus, maka Anda ingin menggunakan \ array_diff_key (). Di sini Anda harus memastikan bahwa Anda meneruskan kunci sebagai kunci di parameter kedua dan bukan sebagai nilai. Jika tidak, Anda harus membalik array dengan \ array_flip (). Dan juga di sini tombol tidak akan berubah / indeks ulang.

Kode

<? php     $ array = [0 => "a", 1 => "b", 2 => "c"];
$ array = \ array_diff_key ($ array, [0 => "xy", "2" => "xy"]);
// ↑ ↑ Kunci susunan yang ingin Anda hapus
?>

Keluaran

[
[1] => b
]

Juga jika Anda ingin menggunakan \ unset () atau \ array_splice () untuk menghapus beberapa elemen dengan nilai yang sama Anda dapat menggunakan \ array_keys () untuk mendapatkan semua kunci untuk nilai tertentu dan kemudian menghapus semua elemen.