Autor Zpráva
Pepik1
Profil
Dobrý den,

chtěl bych Vás požádat o Vaší pomoc. Řeším problém z DB vyberu například 160 (id) záznamů. Uživatel si zadá do kolika skupin se tyto (id)záznamy mají rozdělit. A potřebuju vymyslet nějaký algoritmus, který by tato čísla do těch skupin rozdělil. Dole uvedu příklad.


id=1;2;3;4;5;6;7;8;9;10 (Výstup z DB)
Počet skupin = 3;

Skupina1= 9;5;1
Skupina2=3;4;8
Skupina3=2;1;6;10

Děkuji za každou radu a pomoc.
juriad
Profil
Použij shuffle a array_chunk. Pozor na to, když počet záznamů není dělitelný počtem skupin, pak dostaneš o jednu skupinu víc.
Kajman
Profil
juriad:
Při chunk by dostal pro deset prvků pole 3 3 3 1, nebo 4 4 2. Podle příkladu chce 4 3 3. Tak to udělat asi ručně...

$id=[1,2,3,4,5,6,7,8,9,10];
$skupin=3;

shuffle($id);
$polozek=floor(count($id) / $skupin);
$navic=count($id) % $skupin;
$hotovo=0;
$skupiny=[];
for($i=1;$i<=$skupin;$i++)
{
  $pocet=$polozek+($i<=$navic?1:0);
  $skupiny[]=array_slice($id,$hotovo,$pocet);
  $hotovo+=$pocet;
}
shuffle($skupiny);
print_r($skupiny);
Pepik1
Profil
Kajman:
Paráda děkuji moc, to je přesně to co jsem potřeboval.

Díky chlapy

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: