Jump to content

návod PHP II. Cykly


Ewwe

Recommended Posts

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

  • Administrátor

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 by Ewwe
Link to comment
Share on other sites

  • Hlavní moderátor

 

 

Pokud nezapomenu tak bude následovat další díl.

Nezapomeneš, věř mi. :keepo:

 

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

  • Administrátor

Nezapomeneš, věř mi. keepo.png

 

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

  • Administrátor

Ewwe, ešte chcem podotknuť vec ako je 

 

break;

mohol by si to zmieniť icon_e_smile.gif

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

  • 2 weeks later...
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 by clouder
Link to comment
Share on other sites

  • Administrátor

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

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 by RmT_Kjuba
Link to comment
Share on other sites

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ě icon_e_biggrin.gif Ale slyšel jsem že se prej Phynton snaží PHP nehradit a je na dobré cestě, no snad se alespoň lidi naučí tabovat icon_e_biggrin.gif

Edited by ATomas
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • Administrátor

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ě icon_e_biggrin.gif Ale slyšel jsem že se prej Phynton snaží PHP nehradit a je na dobré cestě, no snad se alespoň lidi naučí tabovat icon_e_biggrin.gif

Podle mě PHP jen tak něco nenahradí..

Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...