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]); }