Administrátor Popular Post Ewwe 434 Odesláno: 15. Březen, 2017 Administrátor Popular Post Share Odesláno: 15. Březen, 2017 Obsah: Cykly v rychlosti for foreach while 1. Cykly v rychlosti Cykly se používají chceme-li opakovat určitou činnost, několikráte za sebou, opakovaně provádět stejnou proceduru. Postupně ověřovat data, nebo generovat informace. Já se budu zabývat jen třemi cykly které jsou zmíněny v obsahu. Podle mě je zbytečné zabývat se ostatními protože více-méně vycházejí z těchto základních ( především tedy z while ) 2. Cyklus for Cyklus for se hodí k procházení dat a opakování určité činnosti. Syntaxe cyklu je for( [index] ; [podmínka] ; [akce] ) V zásadě jsou dva druhy cyklu for a to inkrementační a dekrementační. Samozřejmě lze použít i násobení, dělení či jinou matematickou činnost $array = [ array(1,"Pes"),array(2,"Kočka"),array(3,"Křeček") ]; echo "<select>"; for( $i = 0; $i < sizeof( $array );$i++ ) { echo "<option value='".$array[$i][0]."'>".$array[$i][1]."</option>"; } echo "</select>"; Důležité je vědět , že for mění hodnotu indexu až jako poslední úkon. Tzn. $array = [ array(1,"Pes"),array(2,"Kočka"),array(3,"Křeček") ]; echo "<select>"; for( $i = 0; $i < sizeof( $array );$i++ ) { //0 echo "<option value='".$array[$i][0]."'>".$array[$i][1]."</option>"; // až tady se provede inkrementace } echo "</select>"; Osobně for používám málokdy. Většinou máte výstupy uložené asociačně a pro ty se hodí třeba právě foreach 3. Cyklus Foreach Foreach je zajímavější protože sním můžete krásně procházet associované pole Základní syntaxe foreach( naplnene_pole as polozka ) //nebo foreach( naplnene_pole as klic => polozka ) Rozdíl mezi těmito dvěma způsoby zápisu je jen v tom , že do promene klic se uloží asociace na indexu. Menší příklad $array = [ "Pes"=>1,"Kocka"=>2,"Krecek"=>3 ]; foreach( $array as $zvire ) { echo $zvire.","; } // Výstupem bude : 1,2,3 foreach( $array as $zvire => $hodnota ) { echo $zvire." ma hodnotu ".$hodnota.","; } // Výstupem bude : Pes ma hodnotu 1,Kocka ma hodnotu 2,Krecek ma hodnotu 3, 4. Cyklus while Cyklus while já osobně moc nepoužívám v podstatě jen k načtení výsledu z mysqli query ( dozvíme se příště ) Syntaxe cyklu while( podminka ) Doslovně syntaxe znamená "dokud platí podmínka" Příklad použití /* Predpokladejme ze máme připojenou databázi s tabulkou users a sloupcem username který obsahuje jméno uzivatele */ $result = $mysqli->query("SELECT * FROM users"); while( $row = $result->fetch_assoc() ) { echo $row["username"]; } Hodnota promenne $row je true pokud je do ni ulozeno pole s výstupem databáze. Tzn dokud je co číst tak cyklus vypisuje. Jakmile už není co číst tak není ani co psát Cyklus while má "derivát" do-while. Klasický while provede akci uzavřenou v bloku pokud podmínka platí. Tzn , že podmínka se kontroluje první a až poté je případně vykonána akce. U cyklu do-while se akce vykoná a až poté je kontrolována podmínka. Jen v rychlosti syntaxe do-while vypadá následovně $i = 0; do { $i++; echo $i; } while( $i<=25); // nejvyžší vypsaná hodnota bude 26 Osobně s do-while nemám moc zkušeností a ani si nepamatuji jestli jsem ho někdy použil.. Pokud nezapomenu tak bude následovat další díl. Pro tento je to momentálně všechno. 5 Link to comment Share on other sites More sharing options...
OceT 60 Odesláno: 15. Březen, 2017 Share Odesláno: 15. Březen, 2017 Pěkný návod. Link to comment Share on other sites More sharing options...
Army 5 Odesláno: 15. Březen, 2017 Share Odesláno: 15. Březen, 2017 Dobrá práce, jen bych vytknul to, že tvoříš pole $array zkrácenou syntaxí a následně pak tvoříš pole uvnitř klasickou syntaxí. Taky vím, že příklad s databází mysqli je zatím neškodný, ale už by to pak podvědomě mohlo navádět právě na použití mysqli, zatímco mnohem lepší volba je PDO. Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 15. Březen, 2017 Author Administrátor Share Odesláno: 15. Březen, 2017 (upraveno) Dobrá práce, jen bych vytknul to, že tvoříš pole $array zkrácenou syntaxí a následně pak tvoříš pole uvnitř klasickou syntaxí. Taky vím, že příklad s databází mysqli je zatím neškodný, ale už by to pak podvědomě mohlo navádět právě na použití mysqli, zatímco mnohem lepší volba je PDO. Upřímně já PDO nepoužívám. Používám mysqli. Které je na tom uplně stejně bezpečnostně jako PDO. Ten rozdíl v deklaracích polí je schválně abych odlišil položky. Kdybych všechny nadeklaroval zkráceně tak pro nováčka to může být matoucí. Rozdíl mezi PDo a mysqli je v podstatě jen v předpripravených statementech a širší podpoře databází. Ale většina lidí pracuje pouze v mysqli nebo mariou. A na ty mysqli stačí. Chápu tvojí myšlenku. Edited 15. Březen, 2017 by Ewwe Link to comment Share on other sites More sharing options...
Hlavní moderátor vEnd 279 Odesláno: 15. Březen, 2017 Hlavní moderátor Share Odesláno: 15. Březen, 2017 Pokud nezapomenu tak bude následovat další díl. Nezapomeneš, věř mi. Jinak hezké, úplně mi uniklo, že foreach lze použít jen pro hodnoty asoc. pole, vždycky jsem to používal v kombinaci s klíči. Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 15. Březen, 2017 Author Administrátor Share Odesláno: 15. Březen, 2017 Nezapomeneš, věř mi. Jinak hezké, úplně mi uniklo, že foreach lze použít jen pro hodnoty asoc. pole, vždycky jsem to používal v kombinaci s klíči. Ne že by nešel použít pro neasociovaná pole ale hodí se právě pro ty asociovaný. Samozřejmě když nemáš "stringový" indexy tak funguje taky ale tam už máš zase na výběr mezi for a foreach to už záležína tom co zrovna potřebuješ Link to comment Share on other sites More sharing options...
Invouk 91 Odesláno: 15. Březen, 2017 Share Odesláno: 15. Březen, 2017 Ewwe, ešte chcem podotknuť vec ako je break; mohol by si to zmieniť 1 Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 15. Březen, 2017 Author Administrátor Share Odesláno: 15. Březen, 2017 Ewwe, ešte chcem podotknuť vec ako je break; mohol by si to zmieniť Ty vole ja o continue a break chtel mluvit a uplně jsem na to zapoměl.... Dík za připomenutí. Večer udělám z domova dodatek. Link to comment Share on other sites More sharing options...
clouder 0 Odesláno: 30. Březen, 2017 Share Odesláno: 30. Březen, 2017 (upraveno) for( [index] ; [podmínka] ; [akce] ) V zásadě jsou dva druhy cyklu for a to inkrementační a dekrementační. Samozřejmě lze použít i násobení, dělení či jinou matematickou činnost $array = [ array(1,"Pes"),array(2,"Kočka"),array(3,"Křeček") ]; echo "<select>"; for( $i = 0; $i < sizeof( $array );$i++ ) { echo "<option value='".$array[$i][0]."'>".$array[$i][1]."</option>"; } echo "</select>"; Důležité je vědět , že for mění hodnotu indexu až jako poslední úkon. Tzn. $array = [ array(1,"Pes"),array(2,"Kočka"),array(3,"Křeček") ]; echo "<select>"; for( $i = 0; $i < sizeof( $array );$i++ ) { //0 echo "<option value='".$array[$i][0]."'>".$array[$i][1]."</option>"; // až tady se provede inkrementace } echo "</select>"; foreach( naplnene_pole as polozka ) //nebo foreach( naplnene_pole as klic => polozka ) Rozdíl mezi těmito dvěma způsoby zápisu je jen v tom , že do promene klic se uloží asociace na indexu. Menší příklad $array = [ "Pes"=>1,"Kocka"=>2,"Krecek"=>3 ]; foreach( $array as $zvire ) { echo $zvire.","; } // Výstupem bude : 1,2,3 foreach( $array as $zvire => $hodnota ) { echo $zvire." ma hodnotu ".$hodnota.","; } // Výstupem bude : Pes ma hodnotu 1,Kocka ma hodnotu 2,Krecek ma hodnotu 3, 4. Cyklus while Cyklus while já osobně moc nepoužívám v podstatě jen k načtení výsledu z mysqli query ( dozvíme se příště ) Cyklus while má "derivát" do-while. Klasický while provede akci uzavřenou v bloku pokud podmínka platí. Tzn , že podmínka se kontroluje první a až poté je případně vykonána akce. U cyklu do-while se akce vykoná a až poté je kontrolována podmínka. Tento topic by som žiaľ nenazval akýmsi "Návodom", maximálne tak mizivou snahou. Chýba zrozumiteľné vysvetlenie a rozdelenie základných typov cyklov - cyklus s podmienkou na začiatku (while), cyklus s podmienkou na konci (do-while), cyklus s určitým počtom opakovaní (for). Štruktúru cyklu for by som popísal skôr takto: for( [inicializácia]; [podmienka]; [príkaz]) { /* ... */ } A jednoznačne by som netvrdil, že sú dva druhy tohto cyklu. Týchto, ako si to ty nazval, "druhov" existuje nekonečne veľa (za predpokladu neobmedzených prostriedkov). Ďalej for nemení hodnotu žiadneho indexu. Cyklus for vykonáva [príkaz] pred vykonaním podmienky, ak už bola vykonaná aspoň raz (tzn. pred ďalším opakovaním). Fatálna chyba, že si nevysvetlil ako prvý cyklus while, na ktorom sa dá krásne ukázať podobnosť a výhoda cyklu for oproti while. Príklad: for( $i = 2; $i <= 10; $i += 2) { /* ... */ } By sa ako while cyklus zapísal takto: $i = 2; while( $i <= 10 ) { /* ... */ $i += 2; } Pri foreach chýba vysvetlenie, čo je to asociatívne pole (chýba v celom "návode" a aj v chronologicky predchádzajúcom návode). Zvyšok návodu je akurát tvoj subjektívny názor a fakt, že ty vlastne cykly (okrem foreach) ani nevyužívaš. Moje hodnotenie je 0/10. Odporúčam celý tento thread vymazať, pretože nič nevysvetľuje, čiže má nulovú informačnú hodnotu a tým pádom je tzv. "užitočný ako stierače na ponorke". Edited 30. Březen, 2017 by clouder Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 30. Březen, 2017 Author Administrátor Share Odesláno: 30. Březen, 2017 Jestli ty doporučujes smazat thread tak já ti doporučuji opustit forum když už si tady teda doporučujeme vzajemne Link to comment Share on other sites More sharing options...
RmT_Kjuba 10 Odesláno: 30. Březen, 2017 Share Odesláno: 30. Březen, 2017 (upraveno) Zas nějaký chytrák co sežral svět a akorát si nahání příspěvky... Toto není návod pro dementy, člověk co sem zavítá a většinou stejně napřed kvůli pawn tak by měl o programování vědět natolik aby ten návod pochopil... Toto by mělo být dostatečně vysvětleno nato aby jsi to pochopil a zároveň ti to nezaplnilo hlavu vecma které ani vědět nepotřebuješ abys v tom nemel jako začátečník guláš PS: Tento člověk vzhledem ke svému postavení má právo psát návody.. A i kdyby to byla jen snaha ví o čem mluví.. Doteď tu žádný takový návod nebyl takže pro nás je to plus.. Ty jsi byl do teď kde ty chytráku Edited 30. Březen, 2017 by RmT_Kjuba Link to comment Share on other sites More sharing options...
ATomas 287 Odesláno: 30. Březen, 2017 Share Odesláno: 30. Březen, 2017 (upraveno) A Foreach lze procházet jakékoliv pole. Jeho kouzlo je v tom že projde vždy celé pole bez ohledu na tom jak pole vypadá. Narozdíl od normálních programovacích jazyků, kde pole je v paměti uspořádáno lineárně a vždy za sebou (Kvůli rychlosti) - tj ten důvod proč se špatně "natahuje", tak php s polem pracuje úplně jinak. Ve výsledku lze pole indexovat až do úplných extémů jako třba mít "mezery" mezi indexy. To kdyby jsme procházeli for cyklem, tak nám přibudou zbytečné iterace, zato foreach proběhl pole a jeho náročnost je vždy rovna počtu prvků pole. Jak rád s oblibou říkám, PHP nám dovolí napsat jakoukoli prasárnu, proto ho má asi tolik lidí v oblibě Ale slyšel jsem že se prej Phynton snaží PHP nehradit a je na dobré cestě, no snad se alespoň lidi naučí tabovat Edited 30. Březen, 2017 by ATomas 1 Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 30. Březen, 2017 Author Administrátor Share Odesláno: 30. Březen, 2017 A Foreach lze procházet jakékoliv pole. Jeho kouzlo je v tom že projde vždy celé pole bez ohledu na tom jak pole vypadá. Narozdíl od normálních programovacích jazyků, kde pole je v paměti uspořádáno lineárně a vždy za sebou (Kvůli rychlosti) - tj ten důvod proč se špatně "natahuje", tak php s polem pracuje úplně jinak. Ve výsledku lze pole indexovat až do úplných extémů jako třba mít "mezery" mezi indexy. To kdyby jsme procházeli for cyklem, tak nám přibudou zbytečné iterace, zato foreach proběhl pole a jeho náročnost je vždy rovna počtu prvků pole. Jak rád s oblibou říkám, PHP nám dovolí napsat jakoukoli prasárnu, proto ho má asi tolik lidí v oblibě Ale slyšel jsem že se prej Phynton snaží PHP nehradit a je na dobré cestě, no snad se alespoň lidi naučí tabovat Podle mě PHP jen tak něco nenahradí.. Link to comment Share on other sites More sharing options...
Tanga 131 Odesláno: 30. Březen, 2017 Share Odesláno: 30. Březen, 2017 A Foreach lze procházet jakékoliv pole. Jeho kouzlo je v tom že projde vždy celé pole bez ohledu na tom jak pole vypadá. Narozdíl od normálních programovacích jazyků, kde pole je v paměti uspořádáno lineárně a vždy za sebou (Kvůli rychlosti) - tj ten důvod proč se špatně "natahuje" Nato mas v kazdom jazyku v standardnej kniznici (okrem C?) Listy a Mapy. A tiez tam kde mas foreach mozes foreachom iterovat cez tie Listy/Mapy. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now