php.jpgJohdatus PHP-kieleen

Sisällysluettelo

JohdantoSyntaksiTietotyypitMuuttujatOperaattoritKontrollirakenteetTaulukotFunktiotLomakkeetTietokantaEvästeetSessiot

www.php.net

Kontrollirakenteet

Kontrollirakenteet voidaan kirjoittaa täysin C-kielestä (ja Javasta) tutulla tavalla. Niiden lisäksi sama asia voidaan usein ilmaista Perlille tyypillisellä tavalla.

If, else, elseif ylös

Ehtolauseet kirjoitetaan aivan C-kielestä (ja Javasta) tutulla tavalla. Seuraavassa on esimerkki, jossa vertaillaan kahta muuttujaa ($eka ja $toka) toisiinsa. Siinä käsitellään erikseen tapaukset $eka>$toka, $eka<$toka ja $eka=$toka.

<?php
  if ($eka > $toka){
    echo "eka on suurempi kuin toka";
  }elseif ($eka == $toka) {
    echo "eka on yhtäsuuri kuin toka";
  }else{
    echo "eka on pienempi kuin toka";
  }
?>

PHP hyväksyy ehtolauseeseen boolean-tyyppisen arvon lisäksi myös muita tietotyyppejä. Luku nolla, tyhjä merkkijono ja esimerkiksi tyhjä taulukko tulkitaan epätodeksi. Kaikki näistä 'nolla-arvoista' poikkeavat arvot tulkitaan epätodeksi. Alla on esimerkki tästä. Esimerkin alussa alustetaan merkkijono tyhjäksi. Lopussa voidaan tutkia, onko välissä olevan koodin suorituksen aikana merkkijonoon tullut sisältöä.

<?php
  $s = "";
  ...
  koodia
  ...
  if($s)
    echo "Merkkijonoon on tullut sisältöä.";
?>

Ehtorakenteiden ilmaisuun on myös vaihtoehtoisia tapoja, joista voit katsoa lisätietoa PHP:n kotisivuilta.

While, do...while, for ylös

Nämä silmukkarakenteet voidaan kirjoittaa täsmälleen samalla tavalla kuin C-kielessä (ja Javassa). Alla on tästä yksinkertainen esimerkki, jossa suoritetaan tulostuslause kymmenen kertaa kolmella tavalla.

<?php
  $a = 10;
  $i = 0;
  while($i<$a){
    echo "while-kierros numero ".($i+1); 
    $i++; 
  }
  $i=0;
  do{
    echo "do...while-kierros numero ".($i+1);
    $i++;
  }while($i<$a);
  for($i=0; $i<$a; $i++)
    echo "for-kierros numero ".($i+1);
  }
?>

Break, continue ylös

Break ja continue toimivat myös C-kielestä tutulla tavalla. Break-komennolla katkaistaan silmukan suoritus kokonaan ja continue-komennolla hypätään silmukan suorituksessa seuraavalle kierrokselle. PHP:ssa on kuitenkin lisäksi ominaisuus, jonka avulla voidaan hypätä sisäkkäistä silmukoista määrätty määrä portaita ulospäin. Seuraava esimerkki valaisee tätä tilannetta.

<?php
  $a=10;
  for($i=0; $i<$a; $i++){
    for($j=0; $j<$a; $j++){
      if($i==1) break 2;
      echo "kierros $i.$j\n";
    }
  }
?>

Esimerkissä on kaksi sisäkkäistä for-silmukkaa, joiden avulla tulostetaan kymmenyksen välein luvut 0.0-9.9. Sisempään silmukkaan on määritelty ehto, jossa toteutetaan break-lause, mikäli ulompi silmukka on toisella kierroksella. Jos tässä kohdassa olisi tavallinen break-lause, jäisi ainoastaan ulomman silmukan toinen kierros suorittamatta. Siis lukusarjasta jäisi välistä luvut 1.0-1.9. Tässä esimerkissä ilmaisu 'break 2;' tarkoittaa sitä, että keskeytetään samalla myös ulomman silmukan suoritus. Siis lukusarja tulostus päättyykin lukuun 0.9.

Break- ja continue-lauseiden yhteydessä voidaan kokonaisluvulla ilmaista se, kuinka monta porrasta hypätään silmukoista ulospäin. Luku 1 tarkoittaa sisintä suoritettavaa silmukkaa, jota ollaan suorittamassa. Se luku voidaan jättää ilmoittamatta, sillä sehän tarkoittaa samaa asiaa kuin brak- tai continue-lause ilman erillistä määrettä. Esimerkissä break-lause on muodossa 'break 2'. Se tarkoittaa siis, että hypätään suoritettavan silmukan lisäksi ulos myös sitä ulommasta silmukasta.

Switch ylös

Switch-lause on myöskin samanlainen kuin C-kielessä (ja Javassa). Parametriksi hyväksytään ainoastaan kokonaisluku. Määritellyt tapaukset suoritetaan järjestyksessä alusta loppuun, ellei suoritusta katkaista break-lauseella, kuten yleensä on tapana. Alla on esimerkki switch-lauseen toteutuksesta.

<?php
  switch($i){
    case 0:
    case 1:
      echo "$i on 0 tai yksi";
    case 4:
      echo "$i on 0, 1 tai 4\n";
      break;
    case 5:
      echo "$i on 5\n";
      break;
    default:
      echo "$i on 3 tai suurempi kuin 5";
  }
?>

Esimerkin mukaisesti case-tapaus voidaan haluttaessa jättää tyhjäksi. Tapaukset suoritetaan joka tapauksessa järjestyksessä seuraavaan break-lauseeseen asti. Siis $i-muutujan ollessa arvossa 0 tai 1, suoritetaan sekä 'case 1' ja 'case 4' kohtiin määritelty toteutus. Suoritus loppuu 'case 4'-kohdassa määriteltyyn break-lauseeseen. Jos $i-muuttujan arvo on 4 tai 5, suoritetaan vain siihen kohtaan (case 4 tai case 5) kirjoitettu koodi. Kaikissa muissa tapauksissa toteutetaan 'default'-kohta.