Saya beralih melalui array objek dan ingin menghapus salah satu objek berdasarkan properti 'id', tetapi kode saya tidak berfungsi.
foreach($array as $element) {
foreach($element as $key => $value) {
if($key == 'id' && $value == 'searched_value'){
//delete this particular object from the $array
unset($element);//this doesn't work
unset($array,$element);//neither does this
}
}
}
Ada saran. Terima kasih.
Jawaban:
sumber
if(isset($element['id']) && $element['id'] == 'searched_value') { unset($array[$elementKey]); }
Saya pikir pada saat itu saya hanya menyalin dan memodifikasi kodenya untuk menunjukkan kepadanya bagaimana cara yangunset
benar.Sepertinya sintaks Anda untuk tidak disetel tidak valid, dan kurangnya pengindeksan ulang dapat menyebabkan masalah di masa mendatang. Lihat: bagian pada array PHP .
Sintaks yang benar ditunjukkan di atas. Ingat juga nilai array untuk pengindeksan ulang, sehingga Anda tidak pernah mengindeks sesuatu yang sebelumnya Anda hapus.
sumber
Anda juga dapat menggunakan referensi pada
foreach
nilai-nilai:sumber
$element = null
TIDAK akan berfungsi, panjangnya$array
tetap sama, itu hanya akan mengandung nullsIni harus melakukan triknya .....
sumber
Hati-hati dengan jawaban utama.
dengan
dan memanggil fungsi
ia kembali
dari pada
Itu karena unset tidak mengindeks ulang array.
Itu mengindeks ulang. (jika kita membutuhkannya)
sumber
Saya tidak banyak programmer PHP, tapi saya bisa mengatakan bahwa dalam C # Anda tidak dapat mengubah array saat iterasi melalui itu. Anda mungkin ingin mencoba menggunakan foreach loop Anda untuk mengidentifikasi indeks elemen, atau elemen untuk menghapus, lalu hapus elemen setelah loop.
sumber