• 06-06-2010, 23:45:36
    #1
      <?php
    function anh_karş_işlevi($a, $b)
    {
        if ($a === $b) {
            return 0;
        }
        return ($a > $b)? 1:-1;
    }
    
    $dizi1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
    $dizi2 = array("a" => "green", "yellow", "red");
    $result = array_diff_uassoc($dizi1, $dizi2, "anh_karş_işlevi");
    print_r($result);
    ?>
    Arkadaşla Bu Kodlamayı Bana net bir sekilde izzah edebilecek bir arkadaşımız varmı mümkünse Satır Satır
    Akşamdan Kalmayım Okuyorum Okuyorum Kafam Almadı

    Detay Burada Ama anlamadım
    http://tr.php.net/manual/tr/function...iff-uassoc.php
  • 06-06-2010, 23:52:26
    #2
    Sanırım bir nevi küme işlemi gibi, aynı olanı almıyor
  • 06-06-2010, 23:54:03
    #3
    taSManiaN adlı üyeden alıntı: mesajı görüntüle
    Sanırım bir nevi küme işlemi gibi, aynı olanı almıyor

    takıldım bu kod'daki Mantığa :S aynı olanıda alıyor
    denedim
  • 06-06-2010, 23:55:04
    #4
    Açıklama:
    "a" => "green" çifti her iki dizide de mevcut olduğundan bu eleman çıktıda bulunmaz. 0 => "red" çifti ise aksine, ikinci "red" değeri 1 anahtarına sahip olduğundan çıktıda bulunur.
    ------------------------------
    Yukarıdaki örneğin çıktısı:
    
    Array(    [b] => brown    [c] => blue    [0] => red)
  • 06-06-2010, 23:59:36
    #5
    taSManiaN adlı üyeden alıntı: mesajı görüntüle
    Açıklama:
    "a" => "green" çifti her iki dizide de mevcut olduğundan bu eleman çıktıda bulunmaz. 0 => "red" çifti ise aksine, ikinci "red" değeri 1 anahtarına sahip olduğundan çıktıda bulunur.
    ------------------------------
    Yukarıdaki örneğin çıktısı:
    
    Array(    [b] => brown    [c] => blue    [0] => red)

    peki burada bunun işlevi nedir zaten bildiğimiz bir kaçtane karşılaştırma array fonksiyonu var buradaki amac nedir
    function anh_karş_işlevi($a, $b)
    bu foksiyon neden kullanılıyorki
    array_dif
    gibi bi kaçtane daha var ama onlafda fonksiyon kullanılmamış bu gibi bir kod nerede kullanılabilir :S benim kafamı karıştıran sanırım bu fonksiyonun neden burada kullanıldıgı oldu

    benzerleri göstermeyen array foksiyonları var zaten
  • 07-06-2010, 00:15:45
    #6
    anladım mantığı
    1. dizide red degeri 0 anahtarına sahip
    2. dizidede oldugu için ilk önce karsılastırıyor ama 2. dizide 1 anahtarını aldıgı için benzersiz oluyor bu yüzden red ekrana bastırılıyor

    burada hem anahtar hem deger karsılastırmasını yapıp seninde dediğin gibi benzersiz olanı alıyor yalnış anlamamışım dimi onaylayacak birini bekliyorum ?
  • 07-06-2010, 00:16:50
    #7
    anh_karş_işlevi Karşılaştırma için kullanıcı tarafından sağlanan bir geriçağırım işlevi kullanılır. İşlev, ilk değiştirgenin ikinciden büyük, küçük veya ikinciye eşit olması durumlarında sırayla sıfırdan büyük, küçük bir değer veya sıfır döndürmelidir.
    "a === b" eğer a, b ile aynı ise return sıfır oluyor. a, b'den büyük olduğunda 1:-1; bu işlemi yapıyorda, bunun ne olduğunu bende anlayamadım
  • 07-06-2010, 00:19:52
    #8
    taSManiaN adlı üyeden alıntı: mesajı görüntüle
    anh_karş_işlevi Karşılaştırma için kullanıcı tarafından sağlanan bir geriçağırım işlevi kullanılır. İşlev, ilk değiştirgenin ikinciden büyük, küçük veya ikinciye eşit olması durumlarında sırayla sıfırdan büyük, küçük bir değer veya sıfır döndürmelidir.
    "a === b" eğer a, b ile aynı ise return sıfır oluyor. a, b'den büyük olduğunda 1:-1; bu işlemi yapıyorda, bunun ne olduğunu bende anlayamadım

    -1 çıkart if else kısaltılmışı yine -1 çıkarttıgı için 0 olrmuyormu ee sonucta 2 degerdende 0 dönüyor

    buraya kadar tamam ama bunu array_diff_uassoc() fonksiyonu bunu nasıl olupta algılıyor :S iyice kafam bulandı

    ($a > $b)? 1:-1;  //bu kısa su oluyor
    
    if ($a > $b){
    return 1;
    }else{
    return $a - 1;
    }
    ($a > $b)? 1:-1;
    bu if deyiminin kısaltılmışı
  • 07-06-2010, 00:26:31
    #9
    hımm, a b'den büyük olduğu için 1 alıyor olmasın ?