• 21-01-2015, 15:11:22
    #1
    Merhaba arkadaşlar, $array değişkenimde aynı key değerim varsa birleştirmem gerekiyor örneğin.
    #benim dizim $array, key değişkenimde $partIsim
    $array[$partIsim]=array($partVerisi);
    şu şekilde olabiliyor.
    $array['nosub']=array("bir");
    $array['nosub']=array("iki");
    $array['nosub']=array("uc");
    $array['tr']=array("dort");
    ben tekrarlayanları birleştirip şu şekilde yapmak istiyorum.
    $array['nosub']=array("bir","iki","uc");
    $array['tr']=array("dort");
    bu konuda yardımcı olabilir misiniz arkadaşlar.
  • 21-01-2015, 21:21:57
    #2
    arkadaşlar bir bilen yok mu array keylerden tekrarlayanları tek array de birleştirmem gerekiyor. Yardımcı olun lütfen.
  • 21-01-2015, 22:06:40
    #3
    Alıntı
    $array['nosub']=array("bir");
    $array['nosub']=array("iki");
    $array['nosub']=array("uc");
    $array['tr']=array("dort");
    yerine

    $array['nosub'][] = 'bir';
    $array['nosub'][] = 'iki';
    $array['nosub'][] = 'uc';
    $array['tr'][] = 'dort';

    şeklinde diziye değer atamasını yaparsan istediğin sonuca erişebilirsin.
  • 21-01-2015, 22:55:41
    #4
    Bayzett adlı üyeden alıntı: mesajı görüntüle
    yerine

    $array['nosub'][] = 'bir';
    $array['nosub'][] = 'iki';
    $array['nosub'][] = 'uc';
    $array['tr'][] = 'dort';

    şeklinde diziye değer atamasını yaparsan istediğin sonuca erişebilirsin.
    hocam siz yanlış anlamışsınız, ben sadece tekrar eden array_keys leri bulup tek hale getirip degerlerini de tek array de birleştirmek istiyordum. $array['nosub'] 3 tane ya
    $array['nosub']=array("bir");
    $array['nosub']=array("iki");
    $array['nosub']=array("uc");
    #bunları birleştirip
    $array['nosub']=array("bir","iki","uc");
    #yapmak istiyorum.
    ama önce hangileri tekrar ediyor onları bulmam lazım. bu tekrar eden $array['tr'] de olabilirdi.
  • 21-01-2015, 23:15:45
    #5
    aynı dizi değişkenindeki array key'ler tekrar etmez. yani 3 tane $array['nosub'] key'i olamaz.

    $a['nosub'] ile $b['nosub'] gibi 2 farklı değişkenin aynı key değerlerini birleştirmek isterseniz array_merge ve array_merge_recursive fonksiyonlarını inceleyebilirsiniz. array_merge fonksiyonu aynı key mevcut ise eklenen dizinin aynı key'e sahip değerini ilgili key'e atandığından dolayı array_merge_recursive daha kolay bir çözüm sunabilir. array_merge ile yapmak isterseniz döngü ile keyleri karşılaştırıp ilgili eklemeleri yapmanız gerecektir.
  • 21-01-2015, 23:28:54
    #6
    Bayzett adlı üyeden alıntı: mesajı görüntüle
    aynı dizi değişkenindeki array key'ler tekrar etmez. yani 3 tane $array['nosub'] key'i olamaz.

    $a['nosub'] ile $b['nosub'] gibi 2 farklı değişkenin aynı key değerlerini birleştirmek isterseniz array_merge ve array_merge_recursive fonksiyonlarını inceleyebilirsiniz. array_merge fonksiyonu aynı key mevcut ise eklenen dizinin aynı key'e sahip değerini ilgili key'e atandığından dolayı array_merge_recursive daha kolay bir çözüm sunabilir. array_merge ile yapmak isterseniz döngü ile keyleri karşılaştırıp ilgili eklemeleri yapmanız gerecektir.
    for döngüsü ile tekrar ediyor tekrar etmeme ihtimali yok degil var, sorun zaten orda değil keylerin aynı olup olmadıgını bulmam lazım. aynı ise tek array yapmam lazım array_merge ile yapacagımı biliyorum fakat. aynı mı değil mi karsılastırması yapmam lazım.
  • 23-01-2015, 02:03:31
    #7
    for döngüsünde de olsa üç tane değeri okuyamazsın. Her veri diğerinin üstüne yazar. O yüzden fordaki kısma müdahele etmen gerekir.
    if(in_array($deger,$array['nosub']))
    $array['nosub'][]=$deger;

    şeklinde yapmalısın.
  • 24-01-2015, 14:53:39
    #8
    ufukt51 adlı üyeden alıntı: mesajı görüntüle
    Merhaba arkadaşlar, $array değişkenimde aynı key değerim varsa birleştirmem gerekiyor örneğin.
    #benim dizim $array, key değişkenimde $partIsim
    $array[$partIsim]=array($partVerisi);
    şu şekilde olabiliyor.
    $array['nosub']=array("bir");
    $array['nosub']=array("iki");
    $array['nosub']=array("uc");
    $array['tr']=array("dort");
    ben tekrarlayanları birleştirip şu şekilde yapmak istiyorum.
    $array['nosub']=array("bir","iki","uc");
    $array['tr']=array("dort");
    bu konuda yardımcı olabilir misiniz arkadaşlar.
    Buradaki gibi yapabilirsiniz : http://stackoverflow.com/a/13987900

    $array["nosub"][]=array("bir"); 
    $array["nosub"][]=array("iki"); 
    $array["nosub"][]=array("uc"); 
    $array["tr"][]=array("dort"); 
    $it=new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
    $l=iterator_to_array($it, false);
    print_r( $l);
  • 24-01-2015, 18:09:24
    #9
    kingofseo adlı üyeden alıntı: mesajı görüntüle
    Buradaki gibi yapabilirsiniz : http://stackoverflow.com/a/13987900

    $array["nosub"][]=array("bir"); 
    $array["nosub"][]=array("iki"); 
    $array["nosub"][]=array("uc"); 
    $array["tr"][]=array("dort"); 
    $it=new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
    $l=iterator_to_array($it, false);
    print_r( $l);
    hocam dediginz gibi birleştiriyor
    echo $l['2'];
    #şeklinde yapmam gerekiyor sizinkinde
    fakat bunu gibi yapmam gerekiyor. ben $l['nosub'] şeklinde key değeri de değişmeden çıktısının array("bir","iki","uc"); olmasını istiyor.