$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..
Basit bir php sorunu
7
●179
- 26-01-2020, 02:22:31
$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
$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);
Umarım doğru anladım.doctor_cmptr adlı üyeden alıntı: mesajı görüntüle
Eğer karışıklık rastgele olsun diyorsan da shuffle() kullanabilirsin. - 26-01-2020, 02:58:19Şö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, 12:43:01Bu 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:16doctor_cmptr adlı üyeden alıntı: mesajı görüntüle
<?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:46hocam mesaj kutunuz dolmuşdoctor_cmptr adlı üyeden alıntı: mesajı görüntüle
yeni öğreniyorum php
