• 07-06-2010, 03:54:31
    #19
    http://www.hiperpaylas.com/php/53972...ff_uassoc.html

    türkçe belki işine yarar.
  • 07-06-2010, 12:27:50
    #20
    ByTriSLaSiS adlı üyeden alıntı: mesajı görüntüle
    neyse bug olayını sağa sola bakmadan çözmüş oldun sende hata cıkmasa bakmazdın büyük ihtimal olsun yinede öğrenmekte fayda var


        function key_compare_func($a, $b)
        {
            if ($a === $b) {
                return 0;
            }
            return ($a > $b)? 1:-1;
        }
    
        $array1 = array("a" = "green", "b" = "Brown", "c" = "blue", 0 = "red");
        $array2 = array("a" = "green", "b" = "Brown", "c" = "blue", 0 = "red");
        
        $result = array_diff_uassoc($array1, $array2, "key_compare_func");
        print_r($result);
    iyi ama bu kodda hata var zaten




    Doğru Yazım Bu Değilmi
        $array1 = array("a" => "green", "b" => "Brown", "c" => "blue", 0 => "red");
        $array2 = array("a" => "green", "b" => "Brown", "c" => "blue", 0 => "red");
    Değiştikten Sonra çıktısı
    Array
    (
        [b] => Brown
        [c] => blue
        [0] => red
    )
    Böyle Olması Gerekir

    Sadece Bununla (=) Değer Atanamıyor Biliyorum


    bak iyice kafam karıştı

    burada array_diff_uassoc() fonksiyonu anh_karş_işlevi($a, $b)
    Buraya birsey göndermiyorki oradan dönen sonucu alıyor :S
    Eminim seninde kafan karıştı :S
    Yukarda veridiğinin çıktısı boş olmasi gerekir çünkü diziler aynı ve $a == $b return 0; oldugu için diziden çıkarılacak, tümü eşit olduğu için hepsi çıkarılacak ve sonuç boş olacak, daha doğrusu olması gerekiyor ama olmuyor bug olduğu için, PHP 5.2.5 var bende bug mevcut.
  • 07-06-2010, 13:00:23
    #21
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    Yukarda veridiğinin çıktısı boş olmasi gerekir çünkü diziler aynı ve $a == $b return 0; oldugu için diziden çıkarılacak, tümü eşit olduğu için hepsi çıkarılacak ve sonuç boş olacak, daha doğrusu olması gerekiyor ama olmuyor bug olduğu için, PHP 5.2.5 var bende bug mevcut.

    bu sekilde düzelttikten sonra
        $array1 = array("a" => "green", "b" => "Brown", "c" => "blue", 0 => "red"); 
        $array2 = array("a" => "green", "b" => "Brown", "c" => "blue", 0 => "red");
    çıktıyı sorunsuz veriyor
  • 07-06-2010, 13:12:31
    #22
    ByTriSLaSiS adlı üyeden alıntı: mesajı görüntüle
    bu sekilde düzelttikten sonra
        $array1 = array("a" => "green", "b" => "Brown", "c" => "blue", 0 => "red"); 
        $array2 = array("a" => "green", "b" => "Brown", "c" => "blue", 0 => "red");
    çıktıyı sorunsuz veriyor
    PHP Versiyonun kaç ve Çıktısı nedir tam olarak
  • 07-06-2010, 13:26:21
    #23
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    PHP Versiyonun kaç ve Çıktısı nedir tam olarak

    PHP Version 5.3.1
  • 07-06-2010, 13:30:13
    #24
    Çıktı nedir tam olarak ?
  • 07-06-2010, 13:32:35
    #25
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    Çıktı nedir tam olarak ?




    buyrun çıktısı

    bi yandan halen mantıgı anlamya calısıyorum sinir oldum iyce :S
  • 07-06-2010, 13:39:56
    #26
    ByTriSLaSiS adlı üyeden alıntı: mesajı görüntüle


    buyrun çıktısı

    bi yandan halen mantıgı anlamya calısıyorum sinir oldum iyce :S
    Çıktı yanlış işte, çıktının boş olması gerekiyor. Tekrar açıklıyorum;

    key_compare_func fonksiyonuna göre $a == $b ise return 0 olduğu için

    ve

    array_diff_uassoc fonksiyonuna göre bu fonksiyondan gelen return "0" olduğunda o verinin diziden çıkarılacağını ifade ettiği için

        $array1 = array("a" => "green", "b" => "Brown", "c" => "blue", 0 => "red"); 
        $array2 = array("a" => "green", "b" => "Brown", "c" => "blue", 0 => "red");
    bu arrray'larda dizilerdeki tüm veriler aynı olduğu için hepsi $a == $b ye gelecektir ve 0 return dönecektir. Bu sebeple alayı diziden silinecektir. ve sonuç boş bir dizi olacaktir.

    Yani ; İkimizin php'sinde de bug var bu fonksiyonda o yüzden yanliş cikti veriyor ve senin kavramanı engelliyor, bence kafa yorma yada bug ile ilgili php e bir patch yada upgrade yap fonksiyon düzelince kavraman kolaylaşacaktır.
  • 07-06-2010, 13:43:28
    #27
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    Çıktı yanlış işte, çıktının boş olması gerekiyor. Tekrar açıklıyorum;

    key_compare_func fonksiyonuna göre $a == $b ise return 0 olduğu için

    ve

    array_diff_uassoc fonksiyonuna göre bu fonksiyondan gelen return "0" olduğunda o verinin diziden çıkarılacağını ifade ettiği için

        $array1 = array("a" => "green", "b" => "Brown", "c" => "blue", 0 => "red"); 
        $array2 = array("a" => "green", "b" => "Brown", "c" => "blue", 0 => "red");
    bu arrray'larda dizilerdeki tüm veriler aynı olduğu için hepsi $a == $b ye gelecektir ve 0 return dönecektir. Bu sebeple alayı diziden silinecektir. ve sonuç boş bir dizi olacaktir.

    Yani ; İkimizin php'sinde de bug var bu fonksiyonda o yüzden yanliş cikti veriyor ve senin kavramanı engelliyor, bence kafa yorma yada bug ile ilgili php e bir patch yada upgrade yap fonksiyon düzelince kavraman kolaylaşacaktır.

    birgün bu fonksiyonu çözecem bakalım ama dediğin gibi boşa kafa yordum dün sabahtan beri :S

    türkiyede detaylı türkçe anlatımlı bir site şart :S php a dan z ye hemde

    teşekkürler tekrar diğer sırdakine gecelim bakalım




    Konu Kapatılırsa Sevinirim Bug Oldugu kesinleşti en azından Bilgilenir merak eden Arkadaşlar