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ä?
= 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.
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ä.
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.
Ja PHP:ssä on sitten vielä varmuuden vuoksi === -operaattorikin, että on siinä operaattoreita joista valita :)
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.
Ok. Kiitos. Tämä sääntö siis pätee lähes kaikissa ohjelmointikielissä? Täytyypä muistaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.