Autor | Zpráva | ||
---|---|---|---|
noname Profil * |
#1 · Zasláno: 4. 5. 2011, 23:07:46
Zdravím, jak můžu omezit while na určitý počet cyklu? Děkuji
|
||
radas Profil * |
#2 · Zasláno: 4. 5. 2011, 23:14:33
třeba počitanim nevím 100% jak je to myšleno ale šlo by to takhle
$a=1; while (...) { //neco if($a==5) break; $a++; } a nebo pak to řešit přes for.... |
||
ShiraNai7 Profil |
#3 · Zasláno: 4. 5. 2011, 23:19:34
for($i = 0; $i < pocet cyklu; ++$i) { ... } |
||
Miloš Profil |
#4 · Zasláno: 5. 5. 2011, 08:15:06 · Upravil/a: Miloš
noname:
while snad omezení už má v úvodní podmínce, ne? $i = 1; while ($i <= 10) { // něco, co se v cyklu vykonává $i++ } Případně se ten inkrement dá napsat přímo do vykonávaného, například: $i = 1; while ($i <= 10) { echo $i++; } radas: Ten break je docela fuj fuj, to už jsi mohl použít i goto. :-D |
||
ShiraNai7 Profil |
#5 · Zasláno: 5. 5. 2011, 08:21:50
Miloš:
„Ten break je docela fuj fuj, to už jsi mohl použít i goto. :-D“ Co je špatného na break? :) Goto je fuj, to ano (naštěstí nepoužívám, píšu pro PHP 5.1.2+). „while snad omezení už má v úvodní podmínce, ne?“ Je celkem zbytečné používat while, když s použitím kontruktu for je to značně přehlednější. |
||
Miloš Profil |
#6 · Zasláno: 5. 5. 2011, 08:41:41 · Upravil/a: Miloš
ShiraNai7:
— Break sám o sobě není nijak špatný, ale jeho výše uvedené užití si v ničem nezadá s goto. — While je vlastně ekvivalent for, nenapadá mě žádný příklad, kdy by šla použít jen jedna konstrukce. Pokud jde ale o přehlednost, záleží hlavně na tom, co je člověk zvyklý používat a jak se to napíše, takže mluvit o přehlednosti z principu samého konstruktoru je imho nesmyslné. Připomíná mi to spory o nesmrtelnost chrousta typu (ne)uzavírání <p> nebo <li>. |
||
radas Profil * |
#7 · Zasláno: 5. 5. 2011, 10:37:27
osobně když potřebuji jen určity počt cyklu tak vždy pišu for je to na jednom řadku a taky mi to přijde přehlednější..ale těch cest jak dojit k cili který potřebuje noname je spousta... kdyby se rozepsal bylo by to o něčem jinem... i bez breau
|
||
Stano Profil |
#8 · Zasláno: 5. 5. 2011, 11:17:38
Miloš:
ako spraviť výpis z mysql bez while? |
||
Joker Profil |
#9 · Zasláno: 5. 5. 2011, 12:21:56
Stano:
„ako spraviť výpis z mysql bez while?“ $result = mysql_query("SELECT sloupec FROM tabulka"); for($data = mysql_fetch_assoc($result); $data != false; $data = mysql_fetch_assoc($result)) { echo $data["sloupec"]." "; } |
||
Stano Profil |
#10 · Zasláno: 5. 5. 2011, 12:55:31
Joker:
dik nad tým som minule totiž rozmýšľal. Prečo databáza nevracia hneď výsledky ako pole? Sa mi nechce veriť že nato neexistuje príkaz. Som po neviem koľkých rokoch pristupoval do DB ručne (bez použitia dákej triedy) a toto som jednoducho nechápal. |
||
DJ Miky Profil |
#11 · Zasláno: 5. 5. 2011, 13:05:42
Joker
for($data = mysql_fetch_assoc($result); $data != false; $data = mysql_fetch_assoc($result)) Nebo přímo osekat inicializační a aktualizační část, takže to napsat přesně jako while: for(; $data = mysql_fetch_assoc($result) ;) |
||
ShiraNai7 Profil |
#12 · Zasláno: 5. 5. 2011, 19:30:18
Stano:
„Prečo databáza nevracia hneď výsledky ako pole?“ Protože k tomu není důvod. Stejně zpracováváš řádky pojednom - není rozdíl v iterování přes resource výsledku či přes pole se všemi výsledky (které by bylo navíc zbytečně celé v paměti skriptu). „Sa mi nechce veriť že nato neexistuje príkaz.“ Není problém si na to udělat funkci. function mysql_query_rows($sql) { $q = mysql_query($sql); $rows = array(); while($r = mysql_fetch_assoc($q)) $rows[] = $r; return $rows; } |
||
Časová prodleva: 13 let
|
0