Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: PHP: Php merkkijonon toisto

Sivun loppuun

k4supur3 [04.02.2010 12:40:13]

#

Terve olen tässä miettinyt että miten onnistuisisin toistamaan merkkijonon "kapakala", siten että tulos olisi =
k
ka
kap
kapa
kapak
kapaka
kapakal
kapakala

<?php
for ($i = "kapakala"; $i < 8; $i++) {
   if ($i > 1) break;
   echo $i;
}

Yritin sitä tollatapaa mutta ei oikee onnistunut... siintä tuntus tulevan loputon tulos...

Mod. lisäsi kooditagit

Macro [04.02.2010 12:44:11]

#

<?php
$sana = "kapakala";
$pituus = strlen($sana);

for($i = 1; $i < $pituus + 1; $i++) {
	echo substr($sana, 0, $i) . "<br>\n";
}
?>

k4supur3 [04.02.2010 12:48:30]

#

Kiitos paljon! Nyt toimii!

Metabolix [04.02.2010 12:51:24]

#

Alkuperäisen koodin melko triviaali virhe on, että eihän vertailussa "kapakala" < 8 ole oikein mitään järkeä – puhumattakaan tekstin "kapakala" lisäämisestä yhdellä ($i++). Vai pystytkö itse sanomaan, onko kapakala pienempi kuin kahdeksan ja paljonko on kapakala + 1?

Kannattaa siis lukea koodi ääneen ja miettiä, onko näissä tietokoneelle tarkoitetuissa ohjeissa jotain mahdollisesti epäselvää. Ihminen osaa ehkä arvata puuttuvat ohjeet, tietokone lähtökohtaisesti ei.

k4supur3 [04.02.2010 13:26:18]

#

Juu... No oon viel alottelija tässä ja tollasta ei oo aikasemmi tullut vastaa... Mutta tällä kertaa yritin laittaa tulostuksen nurinkurin että vastaukseksi tulisi:
kapakala
kapakal
kapaka
kapak
kapa
kap
ka
k

Mutta siitä tulikin:
kapakal
kapaka
kapak
kapa
kap
ka
k

ja se yrittää koko ajan lähettää "Dataa" kun kattoo selaimen vasemmasta alareunasta ja muutenkii latautuu hitaasti, et mikäs tossa maihtais olla vikana?

<?php
$sana = "kapakala";
$pituus = strlen($sana);

for($i = 0; $i < $pituus - 1; $i--) {

    echo substr($sana, 0, $i) . "<br>\n";

Mod. lisäsi kooditagit

trilog [04.02.2010 13:33:35]

#

Suosittelen tutustumaan PHP-oppaaseen, for-silmukka löytyy oppaan 3. osasta.

Vika silmukassasi on, että alustat $i:n nollaksi, vähennät sitä joka kierroksella yhdellä ($i:stä tulee siis -1, -2, -3 jne.), joten ehto $i < $pituus - 1 täyttyy aina (silmukka ei pääty koskaan).

Macro [04.02.2010 13:34:04]

#

<?php
$sana = "kapakala";
$pituus = strlen($sana);

for($i = $pituus; $i > 0; $i--) {
	echo substr($sana, 0, $i) . "<br>\n";
}
?>

k4supur3 [04.02.2010 13:39:28]

#

Nyt toimii! Kiitos, ja pitää tosiaankii lukee tota for-silmukka osioo!


Sivun alkuun

Vastaus

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

Tietoa sivustosta