sivut.web

ohjeita web-sivuston tekijälle

Komentorakenteet

Yleistä

PHP-kieleen on rakennettu useita komentorakenteita, joilla ohjelman suoritusta ohjataan. Näistä komentorakenteista jokainen on lainattu C-kielestä ja ne esiintyvät monissa muissa ohjelmointikielissä.

If, elseif, else

If/elseif/else- rakenteella toteutetaan yksinkertaisia ehdollisia suorituksia.

Syntaksi:

if(ehtolause) {
	komentosarja
}
elseif(ehtolause) {
	komentosarja
}
else {
	komentosarja
}

Ehtolauseella tarkoitetaan vertailulausetta, joka palauttaa totuusarvon tosi tai epätosi. Jos arvo on tosi, ensimmäinen komentosarja suoritetaan. Jos ehtolauseen arvo on epätosi, siirrytään elseif-lausekkeeseen. Jos elseif-lauseen ehtolauseen arvo on tosi, suoritetaan sen alla oleva komentosarja. Jos tämäkään ei tärppää, suoritetaan viimeinen, else-lauseen alla oleva komentosarja.

Elseif-lauseita voi olla rajaton määrä, if- ja else-lauseita kuitenkin vain yksi molempia. Elseif- ja else-lauseet ovat valinnaisia eli lause toimii pelkästään if-lauseen varassa jos vaihtoehtoa suoritukselle ei tarvita.

Esimerkki:

$luku = 4;

if($luku > 5) {
	print "Luku on suurempi kuin 5.";
}
elseif($luku < 5) {
	print "Luku on pienempi kuin 5";
}
else {
	print "Luku ei ole suurempi eikä pienempi kuin 5,
joten sen täytyy olla 5.";
}

esimerkit/ifelseifelse.php
lähdekoodi

switch

Switch-lauseet antavat mahdollisuuden yhden muuttujan rinnakkaiseen vertailemiseen.

Syntaksi:

switch($muuttuja) {
	case ensimmainen_arvo :
		komentosarja
		break;
	case toinen_arvo :
		komentosarja
		break;
	jne.
	default :
		komentosarja
		break;
}

Ensimmäinen komentosarja suoritetaan, jos muuttujan $muuttuja arvo vastaa arvoa "ensimmainen_arvo". Vastaavasti, jos arvo vastaa "toinen_arvo", suoritetaan sen alla oleva komentosarja. Jos mikään ei tärppää, suoritetaan "default":n alla oleva komentosarja.

Esimerkkiohjelma tulostaa 8. kuukauden nimen, 'Elokuu':

$kuukausi = 8;

switch($kuukausi) {
	case 1 :
		print "Tammikuu";
		break;
	case 2 :
		print "Helmikuu";
		break;
	case 3 :
		print "Maaliskuu";
		break;
	case 4 :
		print "Huhtikuu";
		break;
	case 5 :
		print "Toukokuu";
		break;
	case 6 :
		print "Kesäkuu";
		break;
	case 7 :
		print "Heinäkuu";
		break;
	case 8 :
		print "Elokuu";
		break;
	case 9 :
		print "Syyskuu";
		break;
	case 10 :
		print "Lokakuu";
		break;
	case 11 :
		print "Marraskuu";
		break;
	case 12 :
		print "Joulukuu";
		break;
	default :
		print "Numero ei vastaa mitään kuukautta";
		break;
}

esimerkit/switch.php
lähdekoodi

While

While-komennolla saadaan aikaan yksinkertainen silmukka. Ohjelma pyörii silmukassa niin kauan kun ehtolause on tosi. Ehtolause tarkistetaan joka kierroksella.

Syntaksi:

while(ehtolause) {
	komentosarja
}

Esimerkkiskripti laskee yhdestä kymmeneen:

$numero = 1;

// niin kauan kuin numero on yhtä suuri tai pienempi kuin 10
while($numero <= 10) {
	print "$numero";
	// kasvatetaan muuttujan arvoa yhdellä
	$numero++;
}

esimerkit/while.php
lähdekoodi

Do/while

Do/while-silmukka on samanlainen kuin while-silmukka vain sillä erolla, että do/while-silmukassa komentosarja suoritetaan ainakin kerran. Komentosarja suoritetaan siis kerran ennen kuin ensimmäisen kerran tarkistetaan ehtolauseen arvo.

Syntaksi:

do {
	komentosarja
} while(ehtolause);

Seuraavan esimerkin silmukka suoritetaan vain kerran, koska 15 on suurempi kuin 10.

$numero = 15;

do {
	print "$numero";
	$numero++;
} while($numero <= 10);

esimerkit/dowhile.php
lähdekoodi

For

For-silmukkaa käytetään lähes yksinomaan silmukoissa, joissa silmukan tulee osata "laskea" tietystä numerosta tiettyyn numeroon.

Syntaksi:

for(alustuslause; ehtolause; iteraatiolause) {
	komentosarja
}

Ennen silmukan aloitusta suoritetaan alustuslause. Siinä määritellään yleensä silmukan laskurimuuttujalle lähtöarvo. Ehtolause suoritetaan joka kierroksen alussa. Jos ehtolauseen tulos on tosi, suoritetaan seuraava kierros. Jos tulos on epätosi, jatketaan ohjelman suoritusta silmukan jälkeen. Iteraatiolause suoritetaan joka kierroksen jälkeen. Siinä yleensä muutetaan laskurimuuttujaa niin, että ehtolause ei palauta enää tosiarvoa kun silmukoita on tehty riittävä määrä.

Esimerkkiskripti laskee yhdestä kymmeneen:

/*
lähtöarvo on yksi; suoritetaan silmukka niin kauan kuin
numero on yhtä suuri tai pienempi kuin 10;
kasvatetaan numeron arvoa yhdellä joka kierroksella
*/
for($numero = 1; $numero <= 10; $numero++) { 
	print "$numero";
}

esimerkit/for.php
lähdekoodi

Seuraava sivu: Aliohjelmat.


Käyttäjien kommentit

29.5.2004 22:17
Jokke

Onko ideoita miten sais silleen et muuttujat: $luku1 $luku2 $luku3 $luku4 $luku5 ..menisivät arvoiltaan suuruusjärjestykseen, siten että suurin arvo menisi $luku1:een ja pienin $luku5:een?

30.5.2004 20:15
Juha-Pekka Järvenpää <jp@sivut.org>

Tuollainen kannattaa toteuttaa taulukolla (array). Taulukko on kokoelma muuttujia. Esimerkiksi:

$luvut = array(1,2,3,4,5);
sort($luvut); // järjestää taulukon suuruusjärjestykseen

Nyt $luvut[0] = 1, $luvut[1] = 2 jne.

$luvut = array_reverse($luvut); // kääntää järjestyksen

Nyt $luvut[0] = 5, $luvut[1] = 4 jne.

6.11.2004 19:08
Mika

Muutama "erilainen" if-lause

if (ehtolause):
komentosarja
elseif (ehtolause):
komentosarja
else:
komentosarja
endif;

Tälläinen toimii myös:
(ehtolause) ? tosi : epätosi;

esim:
$str = 1;
echo ($str > 0) ? 'tottahan tuo' : 'ei pidä paikkaansa';

2.2.2005 22:00
Häh

Mä en ihan tajunnu mikä tos on idea... pelkkii numeroita noissa esimerkeissä... HÄH .. iha tavallist tekstii....????????!!!!

27.6.2005 02:53
Niko <tulipesa@luukku.com>

Voisiko joku kertoa, millä koodinpätkällä saa linkin muuttamaan väriään kun kursori viedään sen päälle?

17.9.2005 17:18
Erkkimon

Tuossa ohessa kerrottiin, että if-lauseessa ei välttämättä tarvita muuta kuin if. Onko mitään ideaa tehdä if-lausetta, jossa on vain if? Eikö toimittaisi saman asian kirjoittaa sama sisältö ilman ifiä ihan suoraan .php-fileeseen.

18.11.2005 15:04
Pena

Miten saisin ohjattua käyttäjän jollekin sivulle jos hän syöttää johonkin tiettyyn kenttään esim luvun 100 ja lähettää lomakkeen?

24.1.2007 10:38
vankka <tommi.reinikka@hotmail.com>

www.onnellinenkoodaaja.on.nimp.org/hypert/mymain/sivu


tuolla on jotain tarpeellista tietoa.

12.3.2007 15:42
lore

Ei oikeen tahtonut toimia nuo sivut... Mutta osoitteesta päätelleen siellä ei voinut olla mitään järkevää.

30.4.2007 21:39
vihainen

>>www.onnellinenkoodaaja.on.nimp.org/hypert/mymain/sivu


>>tuolla on jotain tarpeellista tietoa.

Joo onpa kypsää, Firefox tykkäsi tosi paljon, onneksi oli Linux ja kill, ei se sivusto ollut auki montaa sekuntia...

"Firefox on estänyt 288 ponnahdus ikkunaa...."

Olikohan edes oma emailisi, vai toivotko saavasi hyvän kirjekaverin?

Ihan oikeesti, vois rajottaa vähän mitä työntää nettiin, em. sivujen tekijä vois laittaa kuvansa nettiin, jotta tunnistaisi kun kävelee kadulla vastaan.

15.8.2007 20:24
Frutti

Hei!
Ajattelin kysyä että miten voi tehdä sivuille sellaisen jutun että se ottaa summan mutikassa jonkun lauseen. Eiköhän kysymykseni kuulu tänne vai?

25.12.2007 16:31
ville

miten php tallennetaan?

23.1.2008 17:03
Rax

25.12.2007 16:31
ville

miten php tallennetaan?

Php tallennetaan esim. nimellä index.php

15.8.2008 21:07
höh

Niko: php suoritetaan serverillä, joten sillä ei ole hajuakaan, mitä teet hiirellä. Sen sijaan hommasi onnistuu javascriptillä.

Lisää oma kommentti


Juha-Pekka Järvenpää
jp@sivut.org
http://www.jarvenpaa.net/