PHP

Web o webu

Základy PHP

Cykly

  • while - jestliže platí podmínka, dělej

    While cyklus se používá nejčastěji pro načítání dat z databáze:

    $dotaz="SELECT jmeno FROM zamestnanci";
    $data=mysqli_query($spojeni,$dotaz);
    while($zaz=mysqli_fetch_array($data)){
      echo $zaz["jmeno"];
    }
    

    While cyklus pro objektové načítání dat z databáze:

    $dotaz=$spojeni->prepare("SELECT jmeno FROM zamestnanci");
    $dotaz->execute();
    $dotaz->bin_result($jmeno);
    while($dotaz->fetch()){
      echo $jmeno;
    }
    

    While cyklus se také používá pro načítání souborů ze složky:

    $slozka=opendir("foto");
    while($soubor=readdir($slozka)){
      echo $soubor;
    }
    
  • for - pro i od, do

    For cyklus použijeme tehdy, je-li dán počet opakování, resp. má-li se provést pro hodnoty od - do.

    for ($i=1; $i<=20 ; $i++) {echo "<td>$i</td>";}
        //vypíše čísla od 1 do 20
    for ($i=20; $i>0 ; $i--) {echo "<td>$i</td>";}
        //vypíše čísla od 20 do 1
    
    echo "<table><tr>\n";
    for ($i=$a; $i<=$b ; $i++) {
      echo "<td>$i</td>";
      if($i % 5 == 0 && $i!=$b) {echo "</tr><tr>\n";}
      }
    echo "</tr></table>\n";
        //vypíše čísla od hodnoty proměnné $a do $b
        //vytvoří tabulku po 5 buňkách na řádku
    

    Cyklus lze předčasně ukončit příkazem break

    $x=rand(1,30);  //náhodné číslo od 1 do 30
    for($i=0; i<count($cisla); $i++) {
      if($x==$cisla[$i]) {echo "Číslo $x je v poli"; break;}
    }
    
  • do while - dělej, dokud platí podmínka
    $vylosovana_cisla=array();
    $pocet=0;
    do {
      $x=rand(1,49);  // náhodné číslo od 1 do 49
      if(!in_array($x,$vylosovana_cisla)){
        $pocet++;
        $vylosovana_cisla[$pocet]=$x;
      }
    }while($pocet<6);
    // cyklus uloží do pole 6 náhodných čísel bez opakování
    
    

Cykly pro procházení pole

  • for cyklus s využitím číselných indexů

    Pole je standartně indexováno od 0, count je počet prvků (hodnot) pole:

    $cisla = array(10,20,7,11);
    for($i=0; $i<count($cisla); $i++){
      echo $cisla[$i];
    }
    
  • foreach - načtení pole a uložení hodnoty do jednoduché proměné

    Například při naskenování složky se vytvoří pole názvů souborů uložených ve složce. Cyklus foreach postupně načítá prvky pole a ukládá je do jednoduché proměnné, s níž můžeme pracovat, aniž bychom pracovali s indexy pole:

    $soubory=scandir("obrazky");  //načte názvy souborů do pole
    foreach($soubory as $nazevSouboru){
      echo "<img src='obrazky/$nazevSouboru' alt='$nazevSouboru'>";
    }
    
  • foreach - načtení pole a uložení indexu i hodnoty do jednoduchých proměnných

    Potřebujeme-li změnit hodnotu pole, musíme pracovat s polem a jeho indexem. Jsou-li indexy pole jiné než standartní čísla od 0, využijeme cyklus foreach s možností načíst kromě hodnoty pole i jeho index a pracovat s ním.

    Takto například můžeme ošetřit pole hodnot get proti sql injection. Následující kód je napsán obecně a lze jej includovat do každé php stránky pracující s databází vyrobky a pracující s hodnotami get (např. řazení výpisu, vyhledávání a filtrování dat):

    $spojeni=new mysqli("localhost","root","","vyrobky");
    $spojeni->set_charset("utf8");
    foreach ($_GET as $index => $hodnota){
      $_GET[$index]=$spojeni->real_escape_string($_GET[$index]);
    }