Autor Zpráva
noname
Profil *
Zdravím, jak můžu omezit while na určitý počet cyklu? Děkuji
radas
Profil *
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
for($i = 0; $i < pocet cyklu; ++$i) { ... }
Miloš
Profil
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
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
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 *
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
Miloš:
ako spraviť výpis z mysql bez while?
Joker
Profil
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"]." ";
}
Jak říká Miloš, cykly for a while jdou zaměnit. Nicméně v konkrétní situaci bývá jeden z nich přehlednější a celkově vhodnější než druhý (ostatně proto taky existují oba).
Stano
Profil
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
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
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;
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0