folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder Php Array Bölme Ve Combine ?



Php Array Bölme Ve Combine ?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ratbat
    Ratbat's avatar
    Kayıt Tarihi: 20/Ekim/2012
    Erkek

    selamlar müridler, uzun zamandır php ile ilgilenmiyordum haliyle çoğu şeyi unutmuşum. 

    elimde aşağıdaki gibi binlerce array var

    örnek:
    ID =>[1] => Array
    ([0] => Wales >North Wales>Nefyn)

    ID =>[2] => Array
    ([0] => Spain >Costa del Sol>Mijas Costa>La Cala de Mijas )

    bunu şu şekle nasıl sokarım

    ID =>[1] => Array
    (
    [0] => Wales
    [1] => North Wales
    [2] => Nefyn
    )

    ID =>[2] => Array
    (
    [0] => Spain 
    [1] => Costa del Sol
    [2] => Mijas Costa
    [3] => La Cala de Mijas
    )


    Kurallar satranç tahtasındaki kadar kesin olmalı.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    aercys
    aercys's avatar
    Kayıt Tarihi: 12/Nisan/2008
    Erkek

    İlki için; 
    $array1 = explode(">", $id[1][0]);

    İkincisi için;

    $array2 = explode(">", $id[2][0]);

    Explode belirtilen ayraç ile stringi array'a çevirir.

    $id[1] = $array1;

    $id[2] = $array2;


    0x62 0x75 0x6e 0x75 0x20 0x79 0x61 0x7a 0x61 0x6e 0x20 0x74 0x6f 0x73 0x75 0x6e 0x2c 0x20 0x6f 0x6b 0x75 0x79 0x61 0x6e 0x61 0x20 0x6b 0x6f 0x73 0x75 0x6e
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ratbat
    Ratbat's avatar
    Kayıt Tarihi: 20/Ekim/2012
    Erkek
    aercys bunu yazdı

    İlki için; 
    $array1 = explode(">", $id[1][0]);

    İkincisi için;

    $array2 = explode(">", $id[2][0]);

    Explode belirtilen ayraç ile stringi array'a çevirir.

    $id[1] = $array1;

    $id[2] = $array2;

    Hocam zaten array hepsi, veritabanından id ve breadcrumb kolonlarını çekiyorum. while dışına çıkarınca array oluyor hepsi sonra

    foreach ($id as $ida => $key) {

    $result[$key] = array($breadcrumb[$ida]);

    }

    bu kodla birleştiriyorum tek bir array yapıyorum. Hangi breadcrumb kolonu hangi id ye aitse o idli arrayın altına ekliyor.

    arraya sokmadan implode olarak bölebiliyorum sonra explode ile tekrar array yapıyorum ama aynı id arrayının altına girmiyor. off çok karışık gerçekten anlatamıyorum bile :)


    Kurallar satranç tahtasındaki kadar kesin olmalı.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    aercys
    aercys's avatar
    Kayıt Tarihi: 12/Nisan/2008
    Erkek
    Ratbat bunu yazdı
    aercys bunu yazdı

    İlki için; 
    $array1 = explode(">", $id[1][0]);

    İkincisi için;

    $array2 = explode(">", $id[2][0]);

    Explode belirtilen ayraç ile stringi array'a çevirir.

    $id[1] = $array1;

    $id[2] = $array2;

    Hocam zaten array hepsi, veritabanından id ve breadcrumb kolonlarını çekiyorum. while dışına çıkarınca array oluyor hepsi sonra

    foreach ($id as $ida => $key) {

    $result[$key] = array($breadcrumb[$ida]);

    }

    bu kodla birleştiriyorum tek bir array yapıyorum. Hangi breadcrumb kolonu hangi id ye aitse o idli arrayın altına ekliyor.

    arraya sokmadan implode olarak bölebiliyorum sonra explode ile tekrar array yapıyorum ama aynı id arrayının altına girmiyor. off çok karışık gerçekten anlatamıyorum bile :)

    Hocam implode array elemanlarını birşleştirip string oluşturur, explode string elemanlarını parçalar. 

    Şimdi anladığım kadarı ile özetleyeyim; Senin array'ın aşağıdaki formatta

    $result[1] = " Wales >North Wales>Nefyn";

    $result[2] = " Spain >Costa del Sol>Mijas Costa>La Cala de Mijas";

    Yukarıdaki yapıyı,

    $result[1] = array("Wales" , "North", "Wales" , "Nefyn");

    $result[2] = array( "Spain" , "Costa del Sol", "Mijas Costa" , "La Cala de Mijas");

    Bu hale getirmek istiyorsun doğrumudur?

    aercys tarafından 30/Oca/15 14:52 tarihinde düzenlenmiştir

    0x62 0x75 0x6e 0x75 0x20 0x79 0x61 0x7a 0x61 0x6e 0x20 0x74 0x6f 0x73 0x75 0x6e 0x2c 0x20 0x6f 0x6b 0x75 0x79 0x61 0x6e 0x61 0x20 0x6b 0x6f 0x73 0x75 0x6e
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ratbat
    Ratbat's avatar
    Kayıt Tarihi: 20/Ekim/2012
    Erkek
    aercys bunu yazdı
    Ratbat bunu yazdı
    aercys bunu yazdı

    İlki için; 
    $array1 = explode(">", $id[1][0]);

    İkincisi için;

    $array2 = explode(">", $id[2][0]);

    Explode belirtilen ayraç ile stringi array'a çevirir.

    $id[1] = $array1;

    $id[2] = $array2;

    Hocam zaten array hepsi, veritabanından id ve breadcrumb kolonlarını çekiyorum. while dışına çıkarınca array oluyor hepsi sonra

    foreach ($id as $ida => $key) {

    $result[$key] = array($breadcrumb[$ida]);

    }

    bu kodla birleştiriyorum tek bir array yapıyorum. Hangi breadcrumb kolonu hangi id ye aitse o idli arrayın altına ekliyor.

    arraya sokmadan implode olarak bölebiliyorum sonra explode ile tekrar array yapıyorum ama aynı id arrayının altına girmiyor. off çok karışık gerçekten anlatamıyorum bile :)

    Hocam implode array elemanlarını birşleştirip string oluşturur, explode string elemanlarını parçalar. 

    Şimdi anladığım kadarı ile özetleyeyim; Senin array'ın aşağıdaki formatta

    $result[1] = " Wales >North Wales>Nefyn";

    $result[2] = " Spain >Costa del Sol>Mijas Costa>La Cala de Mijas";

    Yukarıdaki yapıyı,

    $result[1] = array("Wales" , "North", "Wales" , "Nefyn");

    $result[2] = array( "Spain" , "Costa del Sol", "Mijas Costa" , "La Cala de Mijas");

    Bu hale getirmek istiyorsun doğrumudur?

    hocam print_r çektiğimde sonuç aşağıdaki gibi geliyor.

    Array ( [1] => Array ( [0] => Wales >North Wales>Nefyn  ) [2] => Array ( [0] => Spain >Costa del Sol>Mijas Costa>La Cala de Mijas) )

    istediğim şu şekilde değiştirmek bu yapıyı

    Array ( [1] => Array ( [0] => Wales [1] => North Wales [2]  =>Nefyn )  [2] => Array ( [0] => Spain [1]  => Costa del Sol [2]  => Mijas Costa [3]  => La Cala de Mijas ) )

    array [1] ve [2] veritabanından gelen id bölüp tekrar aynı id nin altına sokmak istiyorum.


    Kurallar satranç tahtasındaki kadar kesin olmalı.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    aercys
    aercys's avatar
    Kayıt Tarihi: 12/Nisan/2008
    Erkek
    Ratbat bunu yazdı
    aercys bunu yazdı
    Ratbat bunu yazdı
    aercys bunu yazdı

    İlki için; 
    $array1 = explode(">", $id[1][0]);

    İkincisi için;

    $array2 = explode(">", $id[2][0]);

    Explode belirtilen ayraç ile stringi array'a çevirir.

    $id[1] = $array1;

    $id[2] = $array2;

    Hocam zaten array hepsi, veritabanından id ve breadcrumb kolonlarını çekiyorum. while dışına çıkarınca array oluyor hepsi sonra

    foreach ($id as $ida => $key) {

    $result[$key] = array($breadcrumb[$ida]);

    }

    bu kodla birleştiriyorum tek bir array yapıyorum. Hangi breadcrumb kolonu hangi id ye aitse o idli arrayın altına ekliyor.

    arraya sokmadan implode olarak bölebiliyorum sonra explode ile tekrar array yapıyorum ama aynı id arrayının altına girmiyor. off çok karışık gerçekten anlatamıyorum bile :)

    Hocam implode array elemanlarını birşleştirip string oluşturur, explode string elemanlarını parçalar. 

    Şimdi anladığım kadarı ile özetleyeyim; Senin array'ın aşağıdaki formatta

    $result[1] = " Wales >North Wales>Nefyn";

    $result[2] = " Spain >Costa del Sol>Mijas Costa>La Cala de Mijas";

    Yukarıdaki yapıyı,

    $result[1] = array("Wales" , "North", "Wales" , "Nefyn");

    $result[2] = array( "Spain" , "Costa del Sol", "Mijas Costa" , "La Cala de Mijas");

    Bu hale getirmek istiyorsun doğrumudur?

    hocam print_r çektiğimde sonuç aşağıdaki gibi geliyor.

    Array ( [1] => Array ( [0] => Wales >North Wales>Nefyn  ) [2] => Array ( [0] => Spain >Costa del Sol>Mijas Costa>La Cala de Mijas) )

    istediğim şu şekilde değiştirmek bu yapıyı

    Array ( [1] => Array ( [0] => Wales [1] => North Wales [2]  =>Nefyn )  [2] => Array ( [0] => Spain [1]  => Costa del Sol [2]  => Mijas Costa [3]  => La Cala de Mijas ) )

    array [1] ve [2] veritabanından gelen id bölüp tekrar aynı id nin altına sokmak istiyorum.

    Array ( [1] => Array ( [0] => Wales >North Wales>Nefyn  ) [2] => Array ( [0] => Spain >Costa del Sol>Mijas Costa>La Cala de Mijas) )

    Hocam yukarıdaki verdiğim kod bu örnekle çalışması lazım. Şöyle anlatayım. Dizinin ilk elemanı "Wales >North Wales>Nefyn "

    İlk önce bunu ">" karakterine göre parçalıyoruz;

    $array1 = explode(">", $results[0]);

    //$array1 = array("Wales" , "North", "Wales" , "Nefyn");  array1 in içeriği

    Daha sonra dizinin ikinci elemanına da aynı işlemi uyguluyoruz,

    $array2 = explode(">", $results[1]);

    //$array2 = array( "Spain" , "Costa del Sol", "Mijas Costa" , "La Cala de Mijas"); Array2 nin içeriği

    Şimdi sırasıyla array1 ve array2 aşağıdaki gibi oldu.

    [1] => Array ( [0] => Wales [1] => North Wales [2]  =>Nefyn )

     [2] => Array ( [0] => Spain [1]  => Costa del Sol [2]  => Mijas Costa [3]  => La Cala de Mijas )

    Şimdi bunları tekrardan results array'ının ilk ve ikinci elemanına atamamız lazım. Dolayısı ile;

    $results[0] = $array1;

    $results[1] = $array2;

     

    aercys tarafından 30/Oca/15 15:05 tarihinde düzenlenmiştir

    0x62 0x75 0x6e 0x75 0x20 0x79 0x61 0x7a 0x61 0x6e 0x20 0x74 0x6f 0x73 0x75 0x6e 0x2c 0x20 0x6f 0x6b 0x75 0x79 0x61 0x6e 0x61 0x20 0x6b 0x6f 0x73 0x75 0x6e
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ratbat
    Ratbat's avatar
    Kayıt Tarihi: 20/Ekim/2012
    Erkek

    dikkatli yapınca oldu hocam. fakat şimdi şöyle bir problem oldu bu arraylardan 45bin kadar var :) 

    foreachin içinde kullanmama da yardım edebilirmisin hocam.

    başka türlü bu kadar satırı birleştiremem sanırım.

     

    verdiğim arrayları aşağıdaki kod oluşturuyor.

    foreach ($id as $ida => $key) {

    $result[$key] = array($breadcrumb[$ida]);

          }

    böyle yaptığımda ilkini istediğim gibi yapıyor ama ikinci boş geliyor. 

    foreach ($id as $ida => $key) {

    $result[$key] = array($breadcrumb[$ida]);

            $array[$key] = explode(">", $result[$key][$ida]);

    $result[$key] = $array[$key];

    }

    homca kafam davul gibi oldu inan 1+1 kaç diye sorsalar söyleyemeyecek durumdayım ne yaptığımı biliyorum ama bilinçli yazmıyorum şuan kodları. yardımın için çok teşekkür ederim. 


    Kurallar satranç tahtasındaki kadar kesin olmalı.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    aercys
    aercys's avatar
    Kayıt Tarihi: 12/Nisan/2008
    Erkek

    Rica ederim hocam :) Sana zahmet olmazsa tablo yapısının ilgili kısmı ve örnek birkaç data verebilir misin? Tablo yapısı ve datayı bilmeden biraz zorlanıyorum bende.


    0x62 0x75 0x6e 0x75 0x20 0x79 0x61 0x7a 0x61 0x6e 0x20 0x74 0x6f 0x73 0x75 0x6e 0x2c 0x20 0x6f 0x6b 0x75 0x79 0x61 0x6e 0x61 0x20 0x6b 0x6f 0x73 0x75 0x6e
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ratbat
    Ratbat's avatar
    Kayıt Tarihi: 20/Ekim/2012
    Erkek

    Tekrardan teşekkür ederim hocam.

    veritabanı şu şekilde

    id  breadcrumb

    1  Wales >North Wales>Nefyn
    2  Spain >Costa del Sol>Mijas Costa>La Cala de Mijas

    ... 50 bine kadar bu şekilde gidiyor. 

    aşağıdaki gibi çekiyorum

    $veri = mysql_query("select id,breadcrumb from ic ORDER BY id ASC LIMIT 2");

        while($all= mysql_fetch_assoc($veri))

        {$breadcrumb[]=$all["breadcrumb"];

    $id[]=$all["id"];

        }

    ardından bunu kullanıyorum

    foreach ($id as $ida => $key) {

    $result[$key] = array($breadcrumb[$ida]); 

    }

    print_r ($result); dediğimde id ile breadcrumb verilerini eşleştiriyor. yani bu şekilde sonuç veriyor.

    Array ( [1] => Array ( [0] => Wales >North Wales>Nefyn ) [2] => Array ( [0] => Spain >Costa del Sol>Mijas Costa>La Cala de Mijas) )

     


    Kurallar satranç tahtasındaki kadar kesin olmalı.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    aercys
    aercys's avatar
    Kayıt Tarihi: 12/Nisan/2008
    Erkek

    while ($all = mysql_fetch_assoc($veri)) {

        /*

        $breadcrumb[] = $all["breadcrumb"];

        $id[] = $all["id"];

        */

        // Verileri id ve breadcrumbs şeklinde iki ayrı diziye atmana gerek yok. Tek seferde aşağıdaki gibi yapabilirsin;

     

        $breadcrumb[$all['id']] = explode(">", $all['breadcrumb']);

     

    }

    Birde verileri çekerken eğer hepsini bir kerede göstermen gerekmiyorsa sql sorguna LIMIT eklemeni tavsiye ederim. 


    0x62 0x75 0x6e 0x75 0x20 0x79 0x61 0x7a 0x61 0x6e 0x20 0x74 0x6f 0x73 0x75 0x6e 0x2c 0x20 0x6f 0x6b 0x75 0x79 0x61 0x6e 0x61 0x20 0x6b 0x6f 0x73 0x75 0x6e
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ratbat
    Ratbat's avatar
    Kayıt Tarihi: 20/Ekim/2012
    Erkek
    aercys bunu yazdı

    while ($all = mysql_fetch_assoc($veri)) {

        /*

        $breadcrumb[] = $all["breadcrumb"];

        $id[] = $all["id"];

        */

        // Verileri id ve breadcrumbs şeklinde iki ayrı diziye atmana gerek yok. Tek seferde aşağıdaki gibi yapabilirsin;

     

        $breadcrumb[$all['id']] = explode(">", $all['breadcrumb']);

     

    }

    Birde verileri çekerken eğer hepsini bir kerede göstermen gerekmiyorsa sql sorguna LIMIT eklemeni tavsiye ederim. 

    Çok teşekkür ederim herşey düzeldi şimdi :) ellerin dert görmesin.


    Kurallar satranç tahtasındaki kadar kesin olmalı.
Toplam Hit: 1141 Toplam Mesaj: 12