PHP dizileri, sorunlara neden olabilen boş öğeler—boş dizeler (“”), null değerler (NULL) veya boş diziler (array())—içerebilir. Bu makale, açıklık ve en iyi uygulamalara odaklanarak bu öğeleri kaldırmanın etkili yöntemlerini inceliyor.
İçerik Tablosu
array_filter()
Kullanımıarray_diff()
Kullanımıunset()
Kullanımı (ve neden ondan kaçınmak isteyebilirsiniz)- Doğru Yöntemi Seçme
array_filter()
Kullanımı
array_filter()
en fazla esnekliği sunar. Her öğeye bir geri çağırım işlevi uygular ve geri çağırımın true
döndürdüğü öğeleri korur.
hello [3] => world [6] => ! )
// 0'ı boş olarak ele alan alternatif geri çağırım:
$filteredArray = array_filter($array, function ($element) {
return !empty($element) && $element !== 0;
});
print_r($filteredArray); // Çıktı: Array ( [1] => hello [3] => world [6] => ! )
?>
Bu yaklaşım ince ayarlı kontrol sağlar. Uygulamanızın ihtiyaçlarına göre “boş” tanımını kolayca özelleştirebilirsiniz.
array_diff()
Kullanımı
array_diff()
bir diziyi diğerine karşı karşılaştırır ve yalnızca ilkinde bulunan öğeleri döndürür. Bu, bilinen bir boş değer kümesini kaldırmak için kullanışlıdır.
hello [3] => world [6] => ! [5] => 0 )
?>
array_diff()
basittir ancak array_filter()
kadar uyarlanabilir değildir. Kaldırılacak boş değerleri açıkça listelemenizi gerektirir.
unset()
Kullanımı (ve neden ondan kaçınmak isteyebilirsiniz)
unset()
öğeleri anahtara göre kaldırır. Mümkün olsa da, özellikle büyük diziler için diğer yöntemlerden genellikle daha az verimli ve okunabilirdir.
$value) {
if (empty($value)) {
unset($array[$key]);
}
}
print_r($array); // Çıktı: Array ( [1] => hello [3] => world [6] => ! [5] => 0 )
?>
unset()
ayrıca diziyi yeniden indeksler, anahtarlarınız sayısal değilse anahtar tabanlı erişimi potansiyel olarak bozar. Anahtara göre öğeleri kaldırmanız ve yeniden indekslemenin kabul edilebilir olması gerekiyorsa bu yöntemden kaçının.
Doğru Yöntemi Seçme
Çoğu durumda, esnekliği ve verimliliği nedeniyle array_filter()
önerilir. Önceden tanımlanmış bir boş değer kümesiyle çalışırken array_diff()
uygundur. Anahtara göre öğeleri kaldırmanız ve yeniden indeksleme sonucunu kabul etmeniz için zorlayıcı bir nedeniniz yoksa unset()
‘ten kaçının.