Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

İki diziyi karşılaştırma ve bir soru

Selam arkadaşlar. İki diziyi karşılaştırıyorum aşağıdaki gibi.


<?php
$a  = '1.gif,2.gif,3.gif,4.gif,5.gif';
$b  = '2.gif,3.gif,4.gif,5.gif';

$r1 = explode(",",$a);
$r2 = explode(",",$b);

$fark = array_diff($r1,$r2);

print_r($fark);

?>



array_diff ile 1. dizide olupta 2. dizide olmayan elemanı buluyorum ve print_r ile ekrana aşağıdaki gibi basıyor

Array ( [0] => 1.gif )

Yapmak istediğim iki diziyi karşılaştırmak 1. dizide olupta 2. dizide olmayan elemanı 1. diziden de silmek onun için aşağıdaki şekilde unset kullanmaya çalıştım ama hata alıyorum.


<?php
$a  = '1.gif,2.gif,3.gif,4.gif,5.gif';
$b  = '2.gif,3.gif,4.gif,5.gif';

$r1 = explode(",",$a);
$r2 = explode(",",$b);

$fark = array_diff($r1,$r2);

unset($r1[$fark]);

print_r($r1);

?>



Aldığım hata Warning: Illegal offset type in unset in.. gibi sizce nerede yanlışlık yapıyorum. Yada anlattığım bu işlemi başka yolla yapabilirmiyim? Şimdiden teşekkür ederim.
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • azalet adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    20 cevap - 4 soru
    <?
    $a  = '1.gif,2.gif,3.gif,4.gif,5.gif';
    $b  = '2.gif,3.gif,4.gif,5.gif';
    $r1 = explode(",",$a);
    $r2 = explode(",",$b);
    
    $fark = array_diff($r1,$r2);
    for($i=0;$i<count($r1);$i++)
    {
    	if ($fark[0]==$r1[$i])
    	{
    		unset($r1[$i]);
    	}
    }
    print_r($r1);
    ?>
    


    bu kod seninn işini görür.

    senin hatayı aldığın kod satırı su;
    unset($r1[$fark]);
    sebebi sizin $fark değişkeninizin değeri '1.gif' yazdığınız kodda suna yorumlanıyor
    unset($r1[1.gif]); anlamına geliyor dolayısı ile mantıksız bir kod oluyor çünki
    dizi elmanlarına erisim indis numarası ile olur. $r1[] dizi değişkeninin içerisine yazacağınız değer
    indis numarası olmalıdır.
    • php_delisi adlı üyenin fotoğrafı php_delisi
      Verdiğiniz kodlar, ilginiz ve değerli açıklamanız için teşekkür ederim. Bu sorunumu tam olarak çözmüş oldu. Sağolun.
      10 yıl önce yazılmış
    • azalet adlı üyenin fotoğrafı azalet
      $fark[0] değişkeninin indis değerinin 0 yeriine $i yazarsan daha mantıklı olur aynı işi görür..
      10 yıl önce yazılmış

Cevaplar

Hiç cevap bulunamadı.