Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Jakojäännös ei toimi

Sivun loppuun

Short Php [03.04.2007 16:48:03]

#

Miksi jakojäännökset ei vaan toimi?
Tällä scriptillä tulostaa joka merkkijonon välissä vain - tai rivinvaihdon:

$i = 0;
$i++;
    if ($i % 5 == 0) {
        echo("<br>");
    } else {
        echo(" - ");
    }

Heikki [03.04.2007 16:53:44]

#

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.

Short Php [03.04.2007 17:02:42]

#

Mitäs nyt kun työnsin $i:n function yläpuolelle. (Funktion, jossa scripti tälläkinhetkellä on.)

Blaze [03.04.2007 17:33:47]

#

Short Php kirjoitti:

Mitäs nyt kun työnsin $i:n function yläpuolelle.

Tuosta nyt ei ota mitään selvää.

Short Php [03.04.2007 17:42:42]

#

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ä.
*/
?>

sqwiik [03.04.2007 17:48:39]

#

Se ei tulosta muuta johtuen siitä ettet käske sen tulostaa mitään muuta >_>.

Short Php [03.04.2007 17:58:49]

#

Ö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>.

Jaqqo [03.04.2007 18:06:21]

#

Ainakin tuossa koodissa oletat $i:n olevan globaali, mitä se ei ole. Laita funktion ensimmäiselle riville global $i;

Short Php [03.04.2007 18:39:08]

#

Ei toimi vieläkään.

kayttaja-2791 [03.04.2007 18:55:02]

#

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

Blaze [03.04.2007 18:56:58]

#

Jos alottaisit sen iin ykkösestä, eikä nollasta.

Short Php [03.04.2007 19:48:48]

#

Kiitoksia JTS, toimii. Ja kiitokset blazellekkin, tuo 1:sestä aloittaminen auttoi (jopa).


Sivun alkuun

Vastaus

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

Tietoa sivustosta