• 26-01-2020, 02:09:02
    #1
    $linkler = array("a","b","c","d","e","f","g","h","k");

    elimizde bu şekilde 20 elamlanlı bir dizi olsun

    bu diziyi rastgele 3 elemanlı olarak nasıl yapabiliriz ?
    örneğin:
    $yenilinkler = array(
    1=>array("a","b","c,"),
    2=>array("d","e","f"),
    3=>array("g","h","a,"),
    4=>array("e","f","k,")

    );

    şimidden teşekkürler yardımcı olabilecek arkadaşa..
  • 26-01-2020, 02:22:31
    #2
    $linkler = ['a','b','c','d','e','f','g','h','ı','i','j','k','l','m'];
    
    $verisay = count($linkler)-1;
    $a = rand(0,$verisay);
    $b = rand(0,$verisay);
    $c = rand(0,$verisay);
    
    if ($a == $b || $b == $c || $a == $c) {
    $b = $b-1;
    $c = $c+1;
    }
    
    $yenidizi = array($linkler[$a],$linkler[$b],$linkler[$c]);
    
    print_r($yenidizi);
    bunu bir çalıştırın hocam bunun gibi bir şey mi baya ilkel bir yolla denedim de ben yeni öğreniyorum php
  • 26-01-2020, 02:50:35
    #3
    $linkler = array("a","b","c","d","e","f","g","h","k");
    $newLinkler = [];
    $i=1;
    $t=0;
    foreach($linkler as $link){
        $newLinkler[$t][] = $link;
        if($i%3==0){        
            $t++;
        }
        $i++;
    }
    
    print_r($newLinkler);




    doctor_cmptr adlı üyeden alıntı: mesajı görüntüle
    $linkler = array("a","b","c","d","e","f","g","h","k");

    elimizde bu şekilde 20 elamlanlı bir dizi olsun

    bu diziyi rastgele 3 elemanlı olarak nasıl yapabiliriz ?
    örneğin:
    $yenilinkler = array(
    1=>array("a","b","c,"),
    2=>array("d","e","f"),
    3=>array("g","h","a,"),
    4=>array("e","f","k,")

    );

    şimidden teşekkürler yardımcı olabilecek arkadaşa..
    Umarım doğru anladım.


    Eğer karışıklık rastgele olsun diyorsan da shuffle() kullanabilirsin.
  • 26-01-2020, 02:58:19
    #4
    Şöyle bir fonksiyonla toplam kaç eleman, içindeki elemanlar da kaçar elemanlı olsun itiyorsanız ona göre yeni bir liste yapabilirsiniz.
    $linkler = array("a","b","c","d","e","f","g","h","k");
    
    function olustur($elemanSayisi, $kacarEleman, $array){
    $olusturulan = array();
    for ($i=0; $i < $elemanSayisi; $i++) {
    $eleman = array();
    $random = array_rand($array, $kacarEleman);
    for ($x=0; $x < $kacarEleman; $x++) {
    array_push($eleman, $array[$random[$x]]);
    }
    array_push($olusturulan, $eleman);
    }
    return $olusturulan;
    }
    
    $sonuc = olustur(20,3,$linkler); // toplam 20 eleman, her elema 3'er eleanlı
    echo "<pre>";
    print_r($sonuc);
    echo "</pre>";
  • 26-01-2020, 11:56:08
    #5
    Teşekkürler arkadaşlarnbir arkadaş pm ile cevapladı.
    Array_chunk diye bir hazır array fonksiyonu bu işi yapıyormuş
  • 26-01-2020, 12:43:01
    #6
    Bu yapmak istediğinizi basit bir fonksiyon haline getirdim for içerisinde yapmak istediklerinizi yapıp return edebilirsiniz.

    <?php
    $links = ["a", "b", "c", "d", "e", "f", "g", "h", "k"];
    randomLink(3, $links, 5);
    
    function randomLink($randomLinksCount, $links,$arrayCount){
        $newLinkArray = [];
    
            for($j=0; $j<$arrayCount; $j++){
            $randomLinks = array_rand($links, $randomLinksCount);
    
                for($i=0; $i < $randomLinksCount; $i++){
                print_r($links[$randomLinks[$i]]);
                echo "<br>";
                   /*
                      Yapılacak İşlemler..
    
                    */
               }
          }
    }
    $links olarak belirttiğim sizin linkleri tuttuğunuz array.
    randomLink fonksiyonun ismi 3 tane parametre alıyor. Birinci parametre her array'de kaç adet link bulunacak. İkinci parametre Link array'iniz yani linklerin seçileceği array. Üçüncü parametre ise kaç tane array oluşturulacak.

    Örnek Çıktı;




    -

    "Yapılacak işlemler" yazan yerde ihtiyacınıza göre iç içe array oluşturabilirsiniz.
    CodeShare Linki : https://codeshare.io/Gq1pxj
  • 26-01-2020, 16:10:16
    #7
    doctor_cmptr adlı üyeden alıntı: mesajı görüntüle
    $linkler = array("a","b","c","d","e","f","g","h","k");

    elimizde bu şekilde 20 elamlanlı bir dizi olsun

    bu diziyi rastgele 3 elemanlı olarak nasıl yapabiliriz ?
    örneğin:
    $yenilinkler = array(
    1=>array("a","b","c,"),
    2=>array("d","e","f"),
    3=>array("g","h","a,"),
    4=>array("e","f","k,")

    );

    şimidden teşekkürler yardımcı olabilecek arkadaşa..


    <?php
    $arr = array("a","b","c","d","e","f","g","h","k");
    
    $subset = array_chunk($arr, 3);
    
    var_dump($subset);
    Eğer direk array_chunk kullanırsanız dönen sonuç size belirttiğiniz (örnekte 3) sayılı elemana sahip diziler verir. Fakat random olmaz. Yani her defasında aşağıdaki sonuç döner.

    array (size=3)
    0 =>
    array (size=3)
    0 => string 'a' (length=1)
    1 => string 'b' (length=1)
    2 => string 'c' (length=1)
    1 =>
    array (size=3)
    0 => string 'd' (length=1)
    1 => string 'e' (length=1)
    2 => string 'f' (length=1)
    2 =>
    array (size=3)
    0 => string 'g' (length=1)
    1 => string 'h' (length=1)
    2 => string 'k' (length=1)
    Eğer random olmasını istiyorsanız shuffle ile array elemanlarının random olarak sıralanmasını sağlayıp sonra array_chunk kullanabilirsiniz.

    <?php
    $arr = array("a","b","c","d","e","f","g","h","k");
    
    shuffle($arr);
    
    $subset = array_chunk($arr, 3);
    
    var_dump($subset);
  • 22-04-2020, 16:30:46
    #8
    doctor_cmptr adlı üyeden alıntı: mesajı görüntüle
    $linkler = array("a","b","c","d","e","f","g","h","k");

    elimizde bu şekilde 20 elamlanlı bir dizi olsun

    bu diziyi rastgele 3 elemanlı olarak nasıl yapabiliriz ?
    örneğin:
    $yenilinkler = array(
    1=>array("a","b","c,"),
    2=>array("d","e","f"),
    3=>array("g","h","a,"),
    4=>array("e","f","k,")

    );

    şimidden teşekkürler yardımcı olabilecek arkadaşa..
    hocam mesaj kutunuz dolmuş