Php ile Diziden Boş ve Tekrarlayan Elemanları Silme

 bcakir
 31 Ağustos 2011
 Php

Merhaba arkadaşlar bu yazımda dizilerde çokça karşılaştığımız boş ve tekrarlayan elemen sorununun çözümünü anlatacağım. Dizilerde eleman silmek için unset kullanılır. Ama hangi elemanın veya elemanların boş olduğunu bilmediğimiz için döngü kurup boş olan her elemanı unset ile silmek gerekir. Fakat bu işlem bana biraz amatör programcı mantığı geldi ve bunun kolay bir yolunun olduğunu düşündüm. Sonunda da başka bir dizi fonksiyonunu bu işlem için kullanılabileceğini keşfettim. Bu çözümümü sizlerle paylaşayım.

<?php
$dizi=array("bcakir",61,"",14,".com"," ","","bcakir"," ",61);
$silinsin=array(""," ");
$sonuc=array_diff($dizi,$silinsin);
print_r($sonuc);
?>

Boşlukları silmek için array_diff kullandım. Bu fonksiyon aslında iki dizinin elemanlarından ortak olmayanları bulmak için kullanılıyor. Ama biz eleman olarak boşluk girince boşluklardan kurtulma işlemine de yarıyor. Şimdi ise dizimizde tekrar eden elemanları silelim.

<?php
$dizi=array("bcakir",61,"",14,".com"," ","","bcakir"," ",61);
$yeni=array_unique($dizi);
print_r($yeni);
?>

Bu işlem için de array_unique fonksiyonu var. Bununla da dizinizden tekrar edenleri silebilirsiniz. Bu yazımızın da sonuna geldik. Bir sonrakinde görüşmek üzere. Aşağıya diziden tekrar eden elemanların array_unique fonksiyonu kullanmadan nasıl çıkarıldığını gösteren örnek uygulamayı ekliyorum.

<?php
$dizi=array("bcakir",61,14,".com","bcakir",6,61);
$yeni[0]=$dizi[0];

for($i=1;$i<count($dizi);$i++){
    $sayac=0;
    for($j=0;$j<count($yeni);$j++){
        if($yeni[$j]==$dizi[$i]){
            break;
        }else{
            $sayac++;
            if($sayac==count($yeni)){
                $yeni[count($yeni)]=$dizi[$i];
            }
        }
    }
}

for($i=0;$i<count($yeni);$i++){
    print($yeni[$i]);
}
?>
 5.857 Okunma

Bu yazıya 8 yorum yapılmış.

  1. güzel bilgi teşekkürler peki ben sadece birini çağırmak istersem nasıl olur. açıklarsanız sevinirim.

    • sadece biri derken? eğer demek istediğiniz ayrı ayrı kullanmaksa array_diff veya array_unique ayrı ayrı kullanılabilir.

  2. peki bu işlemi Cde yapabilirimiyiz yada Cde Tekrar eden sayıları çıkartarak yeni bir döngü içinde nasıl yazarız.?

    • C üzerine çalışmadığım için yazım tarzını (Php dili C den türeme bir dil bundan dolayı yazım tarzı benziyordur) veya tekrar eden elemanı çıkarma fonksiyonu var mı bilmiyorum ama mantığını anlatabilirim. Bu işlem en kolay 2 diziyle yapılır. Aşağıdaki Php kodlarını C diline göre düzenlerseniz istediğiniz olacaktır. Kodlar yorum bölümünde tam çıkmıyor yazıya dahil ediyorum.

  3. Yardımlarınız için teşekür ederim.

  4. çok teşekkür ederim.

    $dizi = array_map(‘trim’, $dizi);

    kodu ile boşlukları siliyordum, fakat boşları nasıl temizleyeceğimi bilmiyordum.

  5. Merhaba Hocam;
    Bi şey sorcaktım, array_push ile diziye eleman yazıdırıyorum ama daha sonra bu diziyi array_unique içinde kullanınca tekrar eden elemanları çıkartmıyor. Bunu nasıl yapabilirim? Teşekkürler 🙂 😉

  6. Kod ile boşlukları siliyordum, fakat boşları nasıl temizleyeceğimi bilmiyordum. Teşekkürler.

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla Php
Kapat