Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: FOR-loopissa ongelmia

miiro [10.01.2006 14:20:31]

#

Olen tehnyt tällaisen koodin, jonka pitäisi arpoa 10 satunnaista nimeä. Se arpoo kuitenkin niitä ihan loputtomasti, jos selaimessa ei paina latauksen pysäytysnappia.

<?php
$etunimet = Array("Matti", "Maija", "Elli", "Essi", "Joe");
$sukunimet = Array("Meikäläinen", "Esimerkki", "Doe");
for ($i = 0; $i = 10; $i++) {
$nume = mt_rand(0, count($etunimet) - 1);
$nums = mt_rand(0, count($sukunimet) - 1);
print $etunimet[$nume] ." " .$sukunimet[$nums] ."<br>";
}
?>

Mikä on vikana?
EDIT: Ratkaisin jo, muutin rivin
for ($i = 0; $i = 10; $i++) {
muotoon
for ($i = 0; $i < 10; $i++) {
mutta miksi se toimii vain noin, eikä tolla on yhtäsuuri kuin-merkillä?

juha127 [10.01.2006 15:00:43]

#

= on eri asia kuin ==
= ei tarkoita yhtäsuuri kuin(miten matikan tunnilla on opetettu)
vaan aikamonessa(ehkä kaikissa) ohjelmointi kielissä yhtäsuuruutta on otetttu kaksi = merkkiä ==

for ($i = 0; $i = 10; $i++) eli tässä ensin $i määritellään 0 mutta heti perään taas 10 ja lopuksi sitä kasvatetaan yhdellä.
mutta
for ($i = 0; $i == 10; $i++) eli tässä taas $i määritellään 0 sitten katotaan ==(yhtäsuuruus merkillä) katotaan onko $i 10 jos $i ei ole 10 siihen lisätään 1 ja suoritetaan for lausekkeen sisällä ole scripti.

EDIT
Tuossa viimeisessä selityksessäni on vähän virhettä, mutta acornin viesti on paljon selkeämpi, joten en korjeile tähen mitään.

acorn [10.01.2006 15:05:55]

#

Itseasiassa for($i = 0; $i == 10; $i++) tekee seuraavan:
1. Pistää $i = 0
2. Katsoo, onko $i == 10?
3. Koska ei ole, lopettaa loopin

Vastaavasti for ($i = 0; $i < 10; $i++) toimii, sillä se tarkistaa, onko $i pienempi kuin 10 ja jos asia näin on, lisää $i:tä yhdellä.

hunajavohveli [10.01.2006 15:07:25]

#

Juu, PHP:ssä = on sijoitusoperaattori. Vertailuun on käytettävä == -operaattoria. Tässä voivat hämätä esim. aiemmat kokemukset Basicista, jossa = on sekä sijoitus- että vertailuoperaattori.

ajv [10.01.2006 22:35:21]

#

Ja PHP:ssä on sitten vielä varmuuden vuoksi === -operaattorikin, että on siinä operaattoreita joista valita :)

phadej [10.01.2006 22:45:07]

#

ei tota === operaatoria tarvi kuin siinä tapauksessa, jossa funktio voi palauttaa sekä nollan että falsen, esim strpos https://www.php.net/manual/fi/function.strpos.php

miiro [13.01.2006 18:10:36]

#

Ok. Kiitos. Tämä sääntö siis pätee lähes kaikissa ohjelmointikielissä? Täytyypä muistaa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta