• 19-01-2015, 13:52:31
    #1
    Merhaba arkadalar. array_merge ile ilgili bir sorunum vardı da, belki siz yardımcı olursunuz diye düşündüm. Sorunum şu; array_merge($veri[x], $veri[y]) şeklinde kullandığımda bir sorun yok ama array_merge($veri[x][z], $veri[y]) şeklinde kullandığım, "z=>y" şeklinde çıktı vermesini beklerken "0=>y" şeklinde çıktı veriyor. 0, 1, 2, 3... şeklinde de devam ediyor... $veri[x][z] bu şekilde kullanım nasıl bir etki ediyorsan değerlerimi, rakama çeviriyor! Sebebi ne olabilir?

    Not: ($veri[x][z] + $veri[y]) şeklinde kullandığımda aslında istediğim çıktıyı alabiliyorum ama bu seferde $veri[y]'deki değişken değeri hiç bir şekilde değiştirmiyor ama gelen veriyi kontrol ettiğimde değiştiğini görüyorum.
  • 19-01-2015, 14:57:34
    #2
    Hocam array_merge iki veya daha fazla dizinin bütün elemanlarını birleştirerek, ortaya yeni bir dizi çıkartır.

    Anladığım kadarıyla sizde, bu işlemi tektek yapmak istiyorsunuz.. array_merge yerine diziye yeni bir eleman ekletmek için array_push() kullanabilirsiniz aslında.. tabi bu olayı doğru anladıysam geçerli bir metod olacaktır.
  • 19-01-2015, 16:08:13
    #3
    Ceu adlı üyeden alıntı: mesajı görüntüle
    Hocam array_merge iki veya daha fazla dizinin bütün elemanlarını birleştirerek, ortaya yeni bir dizi çıkartır.

    Anladığım kadarıyla sizde, bu işlemi tektek yapmak istiyorsunuz.. array_merge yerine diziye yeni bir eleman ekletmek için array_push() kullanabilirsiniz aslında.. tabi bu olayı doğru anladıysam geçerli bir metod olacaktır.
    Sorumu biraz daha açayım. Normal çıktım bu şekilde;

    Array
    (
        [x] => Array
            (
                [y] => Array
                    (
                        [a] => 1
                        [s] => 2
                        [d] => 3
                        ...
                    )
                [z] => Array
                    (
                        [a] => 4
                        [s] => 5
                        [d] => 6
                    )
            )
    
    )
    Bu çıktıda z'nin içine "array_merge" ile "e" eklemeye çalıştığımda "a, s, d" anahtarlarını 0, 1, 2 vs. şeklinde sayısal değiştirip "e" yerine 3 olarak ekliyor (tamamını güncellediğinden). Bu şekilde yapma sebebim a, s ve d anahtarlarındaki değerlerin değişken olması. Fonksiyon çalıştığında s'ye eşitse 5'i 6 yapacak, diğerleri yine aynı olarak kalacak, değilse de e anahtarını 1 değeriyle ekleyecek. Farklı bir yöntemle bu yapılır mı bilmiyorum :/

    Düzeltme: Yapmak istediğimi yapabildiğimde, normalde çıktının o şekilde olması lazım... Daha o çıktıyı alamadım
  • 19-01-2015, 19:18:31
    #4
    NarcotiqTR adlı üyeden alıntı: mesajı görüntüle
    Merhaba arkadalar. array_merge ile ilgili bir sorunum vardı da, belki siz yardımcı olursunuz diye düşündüm. Sorunum şu; array_merge($veri[x], $veri[y]) şeklinde kullandığımda bir sorun yok ama array_merge($veri[x][z], $veri[y]) şeklinde kullandığım, "z=>y" şeklinde çıktı vermesini beklerken "0=>y" şeklinde çıktı veriyor. 0, 1, 2, 3... şeklinde de devam ediyor... $veri[x][z] bu şekilde kullanım nasıl bir etki ediyorsan değerlerimi, rakama çeviriyor! Sebebi ne olabilir?

    Not: ($veri[x][z] + $veri[y]) şeklinde kullandığımda aslında istediğim çıktıyı alabiliyorum ama bu seferde $veri[y]'deki değişken değeri hiç bir şekilde değiştirmiyor ama gelen veriyi kontrol ettiğimde değiştiğini görüyorum.
    array_merge yerine $arrays=$dizi1+$dizi2; seklinde denermisin.
  • 19-01-2015, 19:35:05
    #5
    kingofseo adlı üyeden alıntı: mesajı görüntüle
    array_merge yerine $arrays=$dizi1+$dizi2; seklinde denermisin.
    Aslında o şekilde de denedim ama bu seferde +1 eklemiyor değere. Nedense sabit kalıyor. Oysa "++$deger"'e baktığımda 2 ise 3, 3 ise 4 oluyor ama gel gör ki çıktıya bakıyorum 2 ise 2, 3 ise 3 olarak gösteriyor ve vertabanına da o şekilde ekliyor...
  • 19-01-2015, 20:48:59
    #6
    NarcotiqTR adlı üyeden alıntı: mesajı görüntüle
    Aslında o şekilde de denedim ama bu seferde +1 eklemiyor değere. Nedense sabit kalıyor. Oysa "++$deger"'e baktığımda 2 ise 3, 3 ise 4 oluyor ama gel gör ki çıktıya bakıyorum 2 ise 2, 3 ise 3 olarak gösteriyor ve vertabanına da o şekilde ekliyor...
    Kodlari yazarmisin göz atiyim.
  • 19-01-2015, 21:08:15
    #7
    kingofseo adlı üyeden alıntı: mesajı görüntüle
    Kodlari yazarmisin göz atiyim.
    		$a[$b] = ++$c;
    		$d[$e] = array_merge($veri['x'][e], $a);
    		$liste = array_merge($veri['x'], $d);
    yaptığımda a, s ve d yerlerine 0, 1 ve 2 yazıyor!
    ($veri['x'][e] + $a)
    yaptığımda ise bu şekilde çıktı alıyorum. +1 eklemiyor...
    Not: $a'i print_r() yaptığımda 2 yazıyor ama çıktıda 1 :/
    Array
    (
        [x] => Array
            (
                [e] => Array
                    (
                        [a] => 1
                        [s] => 1
                        [d] => 1
                    )
    
            )
    
    )
  • 19-01-2015, 21:38:17
    #8
    NarcotiqTR adlı üyeden alıntı: mesajı görüntüle
    		$a[$b] = ++$c;
    		$d[$e] = array_merge($veri['x'][e], $a);
    		$liste = array_merge($veri['x'], $d);
    yaptığımda a, s ve d yerlerine 0, 1 ve 2 yazıyor!
    ($veri['x'][e] + $a)
    yaptığımda ise bu şekilde çıktı alıyorum. +1 eklemiyor...
    Not: $a'i print_r() yaptığımda 2 yazıyor ama çıktıda 1 :/
    Array
    (
        [x] => Array
            (
                [e] => Array
                    (
                        [a] => 1
                        [s] => 1
                        [d] => 1
                    )
    
            )
    
    )
    Buyrun detayli bir örnek hazirladim yeni olusan dizi $merge["new"] dizisidir.

    $array=array
    (
    "e" => array(
    "a" => "1",
    "s" => "2",
    "d" => "3"
    )
    );
    $merge=array_merge($array, array("x" => $array) );
    $merge=array_slice($merge,1);
    asort($merge);
    
    foreach($merge["x"]["e"] as $key => $value)
    {
    $increase=$value+1;
    $merge["new"][$key]=$increase;
    }
    //print_r( $merge);//
    
    foreach($merge["new"] as $key => $value)
    {
    echo "{$key} = {$value} <br />";
    }
  • 21-01-2015, 01:17:14
    #9
    Ceu adlı üyeden alıntı: mesajı görüntüle
    Hocam array_merge iki veya daha fazla dizinin bütün elemanlarını birleştirerek, ortaya yeni bir dizi çıkartır.

    Anladığım kadarıyla sizde, bu işlemi tektek yapmak istiyorsunuz.. array_merge yerine diziye yeni bir eleman ekletmek için array_push() kullanabilirsiniz aslında.. tabi bu olayı doğru anladıysam geçerli bir metod olacaktır.
    kingofseo adlı üyeden alıntı: mesajı görüntüle
    Buyrun detayli bir örnek hazirladim yeni olusan dizi $merge["new"] dizisidir.

    $array=array
    (
    "e" => array(
    "a" => "1",
    "s" => "2",
    "d" => "3"
    )
    );
    $merge=array_merge($array, array("x" => $array) );
    $merge=array_slice($merge,1);
    asort($merge);
    
    foreach($merge["x"]["e"] as $key => $value)
    {
    $increase=$value+1;
    $merge["new"][$key]=$increase;
    }
    //print_r( $merge);//
    
    foreach($merge["new"] as $key => $value)
    {
    echo "{$key} = {$value} <br />";
    }
    İyi geceler arkadaşlar. En son verdiğim kodlar ile sorunumu şu şekilde çözümledim;

    foreach($veri['x'][e] as $key => $value){
    	if($key == $b) $a[$key] = ($c + 1);
    	else $a[$key] = $c;
    }
    $d[$e] = $a;
    $liste = array_merge($veri['x'], $d);
    Aslında foreach() fonksiyonu ile listeyi sürekli yeniletmeden array_* fonksiyonlarının biriyle direkt seçtiğim anahtarın değerini değiştirmek istedim ama olmadı. @kingofseo, dediğine geldik

    İlgilendiğiniz için teşekkür ederim...