Autor Zpráva
4ever
Profil
Jak náhodně vypsat členy intervalu 80-100, s ohledem na výkon? Chtěl bych toto číslo použít jako index k přístupu k poli. Napadá mě vygenerovat pole pomocí smyčky for a pak z tohoto pole náhodně vybírat element/index/číslo, použít číslo a pak daný element vymazat. Celou akci opakovat např. 100x. Není to moc složitý?
okolojdouci
Profil *
Nebo použít šufle?
netprd
Profil
Co takhle na to pole použít

shuffle();
4ever
Profil
okolojdouci, netprd:
To míchání pole se mi právě nezdá vhodné kvůli výkonu. V poli se nachází výsledky z databáze a myslím si, že by ta operace mohla konzumovat mnoho prostředků. To čeho chci dosáhnout ve výsledku sice je promíchání ale ta operace bude provedena např. 100x s polem, které má 100x elementů typu pole a každé vnořené pole obsahuje spoustu dalších dat.

Nebo jste to mysleli jinak? Jako vytvořit nejdříve seznam indexů toho vícerozměrného pole, pak ten seznam zamíchat a z něj vytáhnout číslo? Nevím co je náročnější na výkon.

Co to znamená, že funkce shuffle zamíchá elementy? Přečísluje indexy nebo manipuluje s elementy, jako že je ukládá do paměti a překopírovává na jiné místo/index?
oop
Profil *
array_rand(  $array , $num_req )
4ever
Profil
oop:
Volbu $num_req jsem přehlédl. Takže tato volba mi umožní načíst všechny elementy náhodně a jedinečně?
netprd
Profil
promíchá to pole takže když ho budeš prochátez za pomoci foreach tak ti to bude brát "jakože" náhodné prvky a není nutné tu operaci(shuffle) přeci provádět 100x ne?

$arr = array(
1 => array("test15",15),
2 => array("test16",16),
3 => array("test17",17),
4 => array("test18",18)
);

shuffle($arr);

foreach($arr as $item){
print_r($item);
}
4ever
Profil
netprd:
To promíchání 100x je z jiného důvodu, než si myslíš. Dělám takový program na test. který obsahuje různé množství otázek. Když bude otázek sto, musí se odpovědi promíchat. Zní to šíleně, sto odpovědí, ale to už záleží na zadavateli.
oop
Profil *
4ever:
Voľba $num_req umožňuje vybrať z poľa viac elementov naraz, tým pádom nedochádza k tomu že by tam bol ten istý viackrát, teda ano jedinečne...

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:

0