Miksi jakojäännökset ei vaan toimi?
Tällä scriptillä tulostaa joka merkkijonon välissä vain - tai rivinvaihdon:
Onko tuossa koodissa mitään järkeä? Ensin asetat i:n arvoksi 0 ja sitten kasvatat sitä yhdellä, eli ehtolauseen kohdalla i:n arvo on aina 1, jonka jakojäännös viidellä jaettaessa on selkeästi 1.
Mitäs nyt kun työnsin $i:n function yläpuolelle. (Funktion, jossa scripti tälläkinhetkellä on.)
Short Php kirjoitti:
Mitäs nyt kun työnsin $i:n function yläpuolelle.
Tuosta nyt ei ota mitään selvää.
No, ehkä helpointa on jos pistän koko scriptin näkyville:
<?php $i = 0; function jippii($m1, $m2) { echo $m1; if ($i % 5 == 0) { echo("<br>"); } else { echo(" - "); } $i++; } jippii("moi", "vain"); jippii("hei", "on"); jippii("terve", "menossa"); jippii("banaani", "kohti"); jippii("apina", "saari"); jippii("php", "puu"); /* Ja tämänhän pitäisi tulostaa moi - hei - terve - banaani - apina<br>php - Mutta se tulostaa joko pelkkiä bee ärriä tai pelkkiä - -merkkejä. */ ?>
Se ei tulosta muuta johtuen siitä ettet käske sen tulostaa mitään muuta >_>.
Öh. Et tainnut ymmärtää oikein. Tarkoitin että sen pitäisi tulostaa moi - hei - terve - banaani - apina<br>php - , mutta se tulostaa moi - hei - terve - banaani - apina - php - tai moi<br>hei<br>terve<br>banaani<br>apina<br>php<br>.
Ainakin tuossa koodissa oletat $i:n olevan globaali, mitä se ei ole. Laita funktion ensimmäiselle riville global $i;
Ei toimi vieläkään.
Pistä se staattiseksi muuttujaksi ennemmin kuin globaaliksi:
<?php function jippii($m1, $m2) { static $i = 0; echo $m1; if ($i % 5 == 0) { echo("<br>"); } else { echo(" - "); } $i++; } jippii("moi", "vain"); jippii("hei", "on"); jippii("terve", "menossa"); jippii("banaani", "kohti"); jippii("apina", "saari"); jippii("php", "puu"); ?>
Toimiiko?
Ja miksi staattiset eikä globaalit? Turha lähteä sotkimaan tuollaisella funktion ulkopuolista muistiavaruutta, koska muuttujaa selkeästi käytetään vain funktion sisällä. Staattiset muuttujat:
http://wiki.mureakuha.com/wiki/PHP-opas#Staattiset_eli_pysyv.C3.A4t_muuttujat
Jos alottaisit sen iin ykkösestä, eikä nollasta.
Kiitoksia JTS, toimii. Ja kiitokset blazellekkin, tuo 1:sestä aloittaminen auttoi (jopa).
Aihe on jo aika vanha, joten et voi enää vastata siihen.