folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder Php Array'i Kendi İçerisinde Ayrıştırma (GROUP BY Gibi)



Php Array'i Kendi İçerisinde Ayrıştırma (GROUP BY Gibi)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Hocalarım şöyle bir kodum olsun

    $Dizimiz=array();
    $Deger1=[1,4,5,3];
    $Deger2=[1,8,8,1];
    $Deger3=[2,0,1,7];
    $Deger4=[1,4,5,3];
    $Deger5=[1,8,8,1];
    $Deger6=[2,0,1,7];
    $Deger7=[1,4,5,3];
    $Deger8=[1,4,5,3];
    $Deger9=[2,0,1,7];
    $Dizimiz[]=$Deger1;
    $Dizimiz[]=$Deger2;
    $Dizimiz[]=$Deger3;
    $Dizimiz[]=$Deger4;
    $Dizimiz[]=$Deger5;
    $Dizimiz[]=$Deger6;
    $Dizimiz[]=$Deger7;
    $Dizimiz[]=$Deger8;
    $Dizimiz[]=$Deger9;
    
    
    print_r(Ayrıştır($Dizimiz));
    

    Bu Kodun Çıktısının Şöyle olmasını istiyorum Yani Şu Array'i versin bana

    $SonucArray=[
    [1,4,5,3],
    [1,8,8,1],
    [2,0,1,7],
    ];

    Yani içerisindeki tekrarlı verileri kaldırmak istiyorum..

    Kendi yazdığım algoritma Bir hayli yavaş....

    tek tek satır ve stunları kontrol ediyorum eşitse yeni array'e at gibi basit bir algoritma..

    Bunu daha hızlı hale getirecek bir algoritma var mıdır ? Link vs verir misiniz rica etsem ?

     

    Edit; Array_Unique iş görmüyor

    MhmdAlmz tarafından 24/Oca/17 15:56 tarihinde düzenlenmiştir

    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Claw
    Claw's avatar
    Kayıt Tarihi: 30/Temmuz/2015
    Erkek

    http://stackoverflow.com/questions/982344/grouping-arrays-in-php

    http://php.net/manual/fr/function.array-combine.php

    https://github.com/jakezatecky/array_group_by

    http://ouzo.readthedocs.io/en/latest/utils/arrays.html#groupby

     

    şöyle bir kaç link buldum

     


    Real Eyes Realize Real Lies
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    shock56
    shock56's avatar
    Kayıt Tarihi: 31/Mart/2007
    Erkek

     

     Şu fonksiyon işe yarıyor gibi. 

    function array_unique_multidimensional($input)
    {
        $serialized = array_map('serialize', $input);
        $unique = array_unique($serialized);
        return array_intersect_key($input, $unique);
    }
    
    
    print_r(array_unique_multidimensional($Dizimiz));

    http://stackoverflow.com/questions/307674/how-to-remove-duplicate-values-from-a-multi-dimensional-array-in-php

     

     

     

     

    shock56 tarafından 24/Oca/17 16:06 tarihinde düzenlenmiştir
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

     

    Bana Algoritma mantığı lazım içerisine kendi kodlarımı yerleştireceğim. Hazır fonksiyon vs değil teşekkürler genede :) 

    https://github.com/jakezatecky/array_group_by <--- EDİT Hazır böl fethet algoritmalarını kullanmışşş :/  

    bi iş gören bu var buna da hız testi uygulayayim bir

    Shock56 , Hocam hazır fonksiyon olmazsa iyidir Aslında Array_Unique tam aradığım birşey gibi ama arka planda bu fonksiyonu çalıştıran mantık lazım

     

    MhmdAlmz tarafından 24/Oca/17 16:07 tarihinde düzenlenmiştir

    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    StruggleR
    StruggleR's avatar
    Kayıt Tarihi: 28/Ocak/2015
    Erkek

    $dizimiz[0] dediğinde [1,4,5,3] değerinin string olarak gelmesini istiyorsan şayet şu yazdığım şekilde kodlarsan istediğin sonuca ulaşırsın.

     

    <?php
    
    $degerler='';
    
    $Deger1='[1,4,5,3]';
    $Deger2='[1,8,8,1]';
    $Deger3='[2,0,1,7]';
    $Deger4='[1,4,5,3]';
    $Deger5='[1,8,8,1]';
    $Deger6='[2,0,1,7]';
    $Deger7='[1,4,5,3]';
    $Deger8='[1,4,5,3]';
    $Deger9='[2,0,1,7]';
    
    $degerler.=$Deger1;
    $degerler.=';'.$Deger2;
    $degerler.=';'.$Deger3;
    $degerler.=';'.$Deger4;
    $degerler.=';'.$Deger5;
    $degerler.=';'.$Deger6;
    $degerler.=';'.$Deger7;
    $degerler.=';'.$Deger8;
    $degerler.=';'.$Deger9;
     
    $dizimiz = explode(';',$degerler);
    var_dump($dizimiz);
    
    
    
    ?>

     

    StruggleR tarafından 24/Oca/17 16:16 tarihinde düzenlenmiştir
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    StruggleR , Hocam örnek kod o 3 Boyutlu dizim var . Kendi içerisinde Shell Short kullandım bulduğum algoritmayı 3 boyutlu dizimde uygulayacağım. Verilerin içinde String ifadeler var char değil

     


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    http://stackoverflow.com/a/26192975/7216036 <--  Şu biraz hızlandırdı daha iyi çözüm arıyorum şuan


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ★★★★
    Genki
    Genki's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek

    Arrayın md5ini alıp karsılastırabilirsin

     

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    StruggleR
    StruggleR's avatar
    Kayıt Tarihi: 28/Ocak/2015
    Erkek
    MhmdAlmz bunu yazdı

    StruggleR , Hocam örnek kod o 3 Boyutlu dizim var . Kendi içerisinde Shell Short kullandım bulduğum algoritmayı 3 boyutlu dizimde uygulayacağım. Verilerin içinde String ifadeler var char değil

     

    Tamam tamam hocam ben anladım seni. array_uniqe gibi bir şeyin mantığını anlayarak mükerrir kayıtların yer olmadığı çok boyutlu dizi oluşturmak istiyorsun.

    O zaman anlaşılabilir bir şekilde basit ve sade olarak yazdığım şu kodlar senin işini görür.

    <?php
    class sinif
    {
    	public $Dizimiz= Array();
    	function ekle($gelen)
    	{
    		if(!in_array($gelen,$this->Dizimiz)) //gelen değer dizide yoksa
    			$this->Dizimiz[] = $gelen; //sınıfın içindeki diziye ekleme yap
    	}	
    }
    
    $Dizimiz=Array();
    $Deger1=[1,4,5,3];
    $Deger2=[1,8,8,1];
    $Deger3=[2,0,1,7];
    $Deger4=[1,4,5,3];
    $Deger5=[1,8,8,1];
    $Deger6=[2,0,1,7];
    $Deger7=[1,4,5,3];
    $Deger8=[1,4,5,3];
    $Deger9=[2,0,1,7];
    
    $nesne = new sinif();
    $nesne->ekle($Deger1); // veya $nesne->ekle([1,4,5,3]); şeklinde ekleme yapabilirsin
    $nesne->ekle($Deger2);
    $nesne->ekle($Deger3);
    $nesne->ekle($Deger4);
    $nesne->ekle($Deger5);
    
    
    $Dizimiz=$nesne->Dizimiz;
    print_r($Dizimiz);
    	
    ?>

     

     

     

    StruggleR tarafından 24/Oca/17 17:12 tarihinde düzenlenmiştir
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Her dizi elemaninin hashini al diyenler hakli. Cok baba sayida veri yoksa sql sunucunun unique yeteneğinden de yararlanabilirsin.


    Olaylara karışmayın!
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Ben yazdım algoritmamı şuan yaklaşık 80x102x1.728 Datayı 19.32 Dakikada hallettim..

     

    https://gist.github.com/mcaskill/baaee44487653e1afc0d

     

    Şurdan yararlandım

     


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
Toplam Hit: 1157 Toplam Mesaj: 11
php array