ELEKTRO
CHEMIE
PROGRAMOVÁNÍ
FOTKY
BLOG
E-SHOP

Elektro

  • Novinky
  • Aktuality
  • PHP
  • MySQL
  • JavaScript
  • .NET
  • Download
  • Odkazy
  • Anketa
  • Návštěvní kniha
  • Mapa webu
  • O webu
  • RSS

  • © by Hugo moravec.zd@gmail.com

    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 ($fp9000);
    }
    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í

    FClose, FEof, FGetS, FOpen, Print, Rand

    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.