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" Sorunu
8
●316
- 19-01-2015, 14:57:34Hocam 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:13Ceu adlı üyeden alıntı: mesajı görüntüle
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:31NarcotiqTR adlı üyeden alıntı: mesajı görüntüle
- 19-01-2015, 19:35:05kingofseo adlı üyeden alıntı: mesajı görüntüle
- 19-01-2015, 21:08:15kingofseo 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 ) ) )
- 19-01-2015, 21:38:17NarcotiqTR adlı üyeden alıntı: mesajı görüntüle
$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:14Ceu adlı üyeden alıntı: mesajı görüntülekingofseo adlı üyeden alıntı: mesajı görüntüle
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...