Menu

PHP Diziden Eleman Silme: unset, array_splice

unset($array[$key]) bir elemanı anahtara göre siler, array_splice konuma göre siler ve yeniden numaralar, array_diff ise değere göre siler. Her birini, sonrasında yeniden indekslemeyi ve yanlış elemanı silen array_search tuzağını öğrenin.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Bir PHP dizisinden bir elemanı anahtarına göre silmek için unset($array[$key]) kullanın. Eleman gider, diğer anahtarlar tam olarak olduğu gibi kalır ve var olmayan bir anahtarı unset etmek hata değildir.

İkinci sonuca bakın: anahtarlar artık 0, 2, 3. unset asla yeniden numaralamaz.

unset sonrasında diziyi yeniden indeksleme

Anahtarlarında boşluk olan bir liste daha sonra sorun çıkarır: bir for ($i = 0; ...) döngüsü eksik indekse çarpar ve json_encode dizi yerine bir JSON nesnesi yazar. array_values() size yeniden temiz anahtarlar verir.

array_splice ile konuma göre silme

array_splice($array, $offset, $length) $offset konumundan başlayarak $length eleman siler, anahtarları yeniden numaralar ve sildiklerini döndürür. Negatif bir başlangıç sondan sayar. Aynı çağrıda yerine yeni elemanlar da ekleyebilir.

array_splice anahtarlarla değil konumlarla çalışır: ilişkisel bir dizide sıradaki yerine göre siler ve dizge anahtarları korur. array_slice sayfası onu orijinali değiştirmeden bir parçayı kopyalayan array_slice ile karşılaştırır.

Bir elemanı değere göre silme

array_diff($array, [$value]) diziyi $value değerine eşit her eleman olmadan, geri kalanların anahtarlarını koruyarak döndürür. Yalnızca ilk eşleşmeyi silmek için anahtarını array_search ile bulun ve unset edin.

array_diff değerleri dizge olarak karşılaştırır, bu yüzden array_diff([1, "1", 2], [1]) hem tam sayıyı hem dizgeyi siler. Koşul "bu değere eşit"ten fazlası olduğunda bir geri çağırmayla array_filter kullanın.

İlk veya son elemanı silme

array_shift() ilk elemanı, array_pop() son elemanı siler. İkisi de sildikleri elemanı döndürür, bu da onları kuyruklar ve yığınlar için kullanışlı yapar.

array_shift sayısal anahtarları 0'dan yeniden numaralar. Boşluk sonda olduğu için array_pop bunu yapmak zorunda değildir.

Aynı anda birkaç anahtarı silme

unset tek bir çağrıda birkaç eleman kabul eder. Bir dizide tuttuğunuz bir anahtar listesini silmek için onu array_flip() ile ters çevirin, böylece isimler anahtar olur, sonra array_diff_key() fonksiyonuna verin.

Sık yapılan hata: değer yokken array_search ile unset

array_search hiçbir şey bulamadığında false döndürür ve dizi anahtarı olarak kullanılan false 0 olur. Bu yüzden bu satır, değer dizide olmadığında her seferinde ilk elemanı siler:

array_search sonucunu her zaman saklayın ve anahtar olarak kullanmadan önce !== false ile karşılaştırın. Düz bir if ($key) de yeterli değildir: 0 indeksindeki bir eşleşme de falsy'dir.

Sıkça Sorulan Sorular

PHP'de bir diziden değere göre eleman nasıl silerim?

Her geçişini silmek için array_diff($arr, ['value']) kullanın. Yalnızca ilkini silmek için anahtarını bulun ve bulunduğunu kontrol ederek unset edin: $k = array_search('value', $arr); if ($k !== false) { unset($arr[$k]); }.

unset sonrasında bir diziyi nasıl yeniden indekslerim?

array_values() ile sarın: $arr = array_values($arr); anahtarları 0'dan yeniden numaralar. Alternatif olarak elemanı sizin için yeniden numaralayan array_splice($arr, $index, 1) ile silin.

Bir dizinin ilk veya son elemanını nasıl silerim?

array_shift($arr) ilk elemanı siler, döndürür ve sayısal anahtarları yeniden numaralar. array_pop($arr) son elemanı siler ve döndürür.

Bir foreach döngüsü içinde bir elemanı unset edebilir miyim?

Evet. foreach ($arr as $k => $v) { if ($v < 0) { unset($arr[$k]); } } güvenlidir, çünkü siz orijinali değiştirirken foreach dizinin bir kopyası üzerinde dolaşır. Anahtarlardaki boşluklar kalır, bu yüzden bir listeye ihtiyacınız varsa sonrasında array_values() çağırın.

Eksik bir anahtarda unset hataya yol açar mı?

Hayır. unset($arr['missing']) hiçbir şey yapmaz ve uyarı vermez, bu yüzden önce isset ile kontrol etmeniz gerekmez.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

BAŞLA