Výběr náhodné položky ze souboru II
Nedávno mi přišel mail s dotazem, jak předělat skript Náhodný výběr položky ze souboru, tak aby se zobrazovali tři čísla z textového souboru.
Příklad souboru použitého jako vstup pro tento skript:
25
45
26
36
789
1025
12
256
124
12588
3658
2548
2563
8745
Vlastní skript je velmi jednoduchý:
<?php
// DEFINICE POCTU CISEL, KTERE SE MAJI VYBRAT
$Pocet_Cisel = 3;
// NACTENI SOUBORU DO POLE PO RADCICH
$fp = FOpen ('cisla.txt', 'r');
while (!FEof ($fp))
{
$radek[] = FGetS ($fp, 9000);
}
FClose ($fp);
// OSETRENI STAVU, KDY JE POCET RADKU MENSI
// NEZ POCET POZADOVANYCH CISEL
if (Count ($radek) < $Pocet_Cisel)
{
$Pocet_Cisel = Count ($radek);
}
$index = Array();
for ($i=0; $i < Pocet_Cisel; $i++)
{
$cislo = Rand (0,(Count($radek)-1));
if (!In_Array($cislo, $index))
{
$index[$i] = $cislo;
}
else $i--;
}
foreach ($index AS $v)
{
print $radek[$v].'<br>';
}
?>
Nejprve musíme načíst obsah souboru po řádcích do pole $cislo. Potom vygenerujeme určený počet náhodných čísel a uložíme je do pole $index. Pokud je počet čísel v souboru menší než požadovaný počet náhodných čísel, tak ho musíme patřičně zmenšit. Jinak nám vznikne nekonečný cyklus. Pomocí funkce In_Array() kontrolujeme, jestli není vybrané číslo již uloženo v poli. Nakonec vytiskneme řádky s odpovídajícím číslem.
Seznam použitých funkcí
Odkazy
Náhodný výběr ze souboru
Náhodný výběr položky z databáze
LICENCE
Všechny skripty na tomto webu jsou poskytovány, pokud není uvedeno jinak, bez jakýchkoliv licenčních požadavků a také bez záruk.