Kirjoittaja: Antti Laaksonen [antti.laaksonen@mbnet.fi]
Tässä PHP-oppaan toisessa osassa perehdymme muuttujiin ja taulukoihin. Muuttujia tarvitaan lähes jokaisessa PHP-skriptissä; ne sisältävät erityyppistä skriptin suorituksessa tarvittavaa tietoa. Muuttuja auto voisi sisältää auton merkin ja vuosi sen ostovuoden. Taulukot taas sisältävät monta samankaltaista muuttujaa yhdessä kuten parkkitalon kaikki autot.
Muuttujien merkintä ja tyypit
Jos olet ohjelmoinut aiemmin jollain muulla kielellä, olet varmaan tottunut määrittelemään muuttujat ennen niiden käyttöä. PHP:ssä tämä ei kuitenkaan ole tarpeellista: muuttujat ovat automaattisesti käytössä siitä lähtien, kun niihin viitataan koodissa.
Muuttujat erotetaan muusta koodista laittamalla dollarimerkki niiden nimien eteen. Muuttujanimi voi sisältää isoja ja pieniä kirjaimia, numeroita ja alaviivoja. Se ei kuitenkaan voi alkaa numerolla. Isot ja pienet kirjaimet tarkoittavat eri asiaa, eli $kirja ja $Kirja viittaavat eri muuttujiin.
Muuttujalle ei myöskään tarvitse määritellä tyyppiä, vaan se mukautuu kaikkiin tarkoituksiin sen mukaan, minkälaista tietoa sille annetaan. PHP:n tärkeimmät muuttujatyypit ovat:
Merkkijono on tekstiä sisältävä muuttuja. Koodissa merkkijonot ympäröidään joko lainaus- tai heittomerkeillä. Jos käytetään lainausmerkkejä, käytössä on seuraavat erikoismerkinnät:
| merkintä | tarkoitus |
\\ | kenoviiva (\) |
\$ | dollarimerkki ($) |
\" | lainausmerkki (") |
\n | rivinsiirto (ASCII 10) |
\r | rivinvaihto (ASCII 13) |
\t | sarkain, tabulaattori (ASCII 9) |
Kokonais- ja liukuluvut kirjoitetaan sellaisenaan, desimaalipilkun merkki on piste. Boolean-muuttujia käytetään sellaisiin tarkoituksiin, joissa muuttujalla on vain kaksi arvoa: tosi (true) tai epätosi (false).
Sijoituslause
Muuttujan arvo asetetaan sijoituslauseella, mikä tapahtuu PHP:ssä yhtäsuuruusmerkin avulla. Seuraavassa on muutamia esimerkkejä sijoituslauseista eri muuttujatyypeillä:
<?php
//merkkijonoja
$testi = "merkkijono";
$nimi = "Kalle \"Kake\" Virtanen";
$hakemisto = "c:\\php\\";
//kokonaislukuja
$kerros = 5;
$ika = 33;
$vuosi = 2003;
//liukulukuja
$pituus = 1.72;
$korko = 122.25;
$pii = 3.14159;
//boolean-arvoja
$tarkistus = true;
$virhe = false;
?>
Muuttujien tulostaminen
Muuttujia voidaan tulostaa samaan tapaan kuin tekstiä echo- ja print-komennoilla. Jos tulostettava teksti on ympäröity lainausmerkeillä, sen sisään voi laittaa suoraan muuttujanimiä. Muuttujanimen voi erottaa muusta tekstistä aaltosuluilla, mikäli se on vaarassa sekoittua muuhun tekstiin.
<?php
//tulostetaan pienet kirjaimet a-z ja numerot 1-9
$kirjaimet = "abcdefghijklmnopqrstuvwxyz";
$numerot = 123456789;
echo $kirjaimet;
echo " ";
echo $numerot;
?>
<?php
//tulostetaan Pekan asuinpaikka ja ikä
$nimi = "Pekka";
$kaupunki = "Hämeenlinna";
$ika = 55;
echo "$nimi asuu {$kaupunki}ssa ja on $ika vuotta vanha.";
?>
Muuttujien yhdistäminen
Muuttujien yhdistämiseen käytetään pistettä. Myös lukumuuttujia käsitellään merkkijonoina, jolloin 5 . 2 on 52, ei 7.
<?php
//muodostetaan sanoista "esi" ja "merkki" sana "esimerkki"
$alku = "esi";
$loppu = "merkki";
$sana = $alku . $loppu;
echo $sana;
?>
<?php
//muodostetaan luvusta 10 ja sanasta "vuotias" sana "10-vuotias"
$ika = 10;
$paate = "vuotias";
$sana = $ika . "-" . $paate;
echo $sana;
?>
Laskutoimitukset
Muuttujien väliset laskutoimitukset merkitään operaattoreiden avulla. Perusoperaattorit ovat yhteen- (+), vähennys- (-), kerto- (*) ja jakolasku (/). Viides perusoperaattori on jakojäännös, joka merkitään %. Tämän lisäksi sulkumerkkien käyttäminen on mahdollista, PHP noudattaa laskujärjestyssääntöjä.
<?php
//esimerkkejä laskutoimituksista
$yhteen1 = 1 + 1; //2
$yhteen2 = 1 + 2 + 3 + 4 + 5; //15
$vahennys1 = 4 - 5; //-1
$vahennys2 = 10 - 5 - 3; //2
$kerto1 = 5 * 6; //30
$kerto2 = 60 * 60 * 24 * 365; //31536000
$jako1 = 24 / 8; //3
$jako2 = 50 / 5 / 3; //3.3333333333333
$jjaannos = 8 % 5; //3
$yhd1 = 5 * (10 + 3) - 8; //57
$yhd2 = 125 / ((1 + 1 + 3) * 5); //5
?>
<?php
//esimerkkejä laskutoimituksista muuttujilla
$eka = 10;
$toka = 5;
$yhteen = $eka + $toka; //15
$vahennys = $eka - $toka; //5
$kerto = $eka * $toka; //50
$jako = $eka / $toka; //2
$yhd = (($eka - $toka) + ($toka + $eka)) / $eka; //2
?>
Eräitä yleisiä laskutoimituksia voidaan merkitä lyhyemmin. Nämä merkinnät löytyvät allaolevasta taulukosta.
|
|
Merkintöjen $a++ ja ++$a ero on siinä, että mikäli merkintä asetetaan muuttujan arvoksi, $a++ palauttaa $a:n arvon ennen lisäystä ja ++$a lisäyksen jälkeen. Sama pätee luonnollisesti merkintöihin $a-- ja --$a.
<?php
//lisäysmerkinnän paikan välinen ero
$a = 5;
$b = ++$a: //$b = 6
$a = 5;
$b = $a++; //$b = 5
?>
Muuttuja muuttujasta
Jos muuttujan nimi on merkkijonossa, sen arvoon päästään käsiksi laittamalla merkkijonomuuttujan eteen toinen dollarimerkki.
<?php
$hinta = 50;
$muuttuja = "hinta";
echo $$muuttuja; //50
?>
Taulukot
Jos skriptissä esiintyy useita samantyyppisiä muuttujia, on järkevää luoda niistä taulukko. Taulukko sisältää joukon arvoja, joihin viitataan yksilöllisillä indekseillä. Indeksien täytyy olla joko kokonaislukuja tai merkkijonoja, ja niiden arvot voivat olla mitä tahansa muuttujatyyppiä, myös toisia taulukoita.
Taulukon luominen tapahtuu esimerkiksi array-funktiolla. Taulukon sisältö ilmoitetaan funktiolle muodossa indeksi1=>sisalto1, indeksi2=>sisalto2, ..., indeksin=>sisalton. Jos indeksejä ei ilmoiteta, ne luodaan kokonaislukuina nollasta alkaen.
<?php
//luodaan taulukko autonmerkeistä
$autot = array("Audi", "BMW", "Cadillac", "Daihatsu");
//luodaan taulukko maiden pääkaupungeista
$kaupungit = array("Ruotsi" => "Tukholma", "Saksa" => "Berliini", "Suomi" => "Helsinki");
?>
Taulukon arvoja voi käyttää kuin tavallisia muuttujia. Indeksi merkitään hakasulkuihin taulukon nimen jälkeen.
<?php
//tulostetaan tietoa edellisen esimerkin taulukoista
echo $autot[0]; //Audi
echo $autot[2]; //Cadillac
echo "Suomen pääkaupunki on " . $kaupungit["Suomi"] . ".";
?>
Taulukon arvoja voi myös muuttaa ja lisätä samalla tavalla. Jos indeksi jätetään tyhjäksi, indeksiksi valitaan seuraava järjestyksessä oleva. Taulukon voi myös luoda suoraan tällä tavalla, array-funktiota ei ole pakko käyttää.
<?php
//lisätään autotaulukkoon uutta tietoa
$autot[] = "Fiat"; //indeksiksi tulee 4
$autot[] = "Honda"; //indeksiksi tulee 5
//lisätään Belgia ja sen pääkaupunki Bryssel
$kaupungit["Belgia"] = "Bryssel";
?>
Funktio count palauttaa taulukon arvojen lukumäärän.
<?php
//tulostetaan taulukojen arvojen lukumäärät
echo "Autoja on " . count($autot) . ". ";
echo "Kaupunkeja on " . count($kaupungit) . ". ";
?>
PHP sisältää suuren joukon taulukkojen käyttöön liittyviä funktioita, joista monesti on suurta hyötyä skriptin toteutuksessa. Täydellinen lista taulukkofunktioista löytyy PHP:n manuaalista.
Loppusanat
Opassarjan toinen osa alkaa olla lopussaan. Yritin saada mukaan mahdollisimman paljon asiaa muuttujista ja taulukoista, toivottavasti mitään olennaista ei unohtunut. Palautetta voi edelleen lähettää sähköpostilla tai muilla tavoin. Seuraavan oppaan aiheita ovat tärkeimmät ehto- ja silmukkarakenteet. osa 3
Antti Laaksonen, 22.2.2003, 1.3.2003