Kirjoittaja: Antti Laaksonen (2003).
⚠ Huomio! Tämä opas on vanhentunut. Oppaan sisältöön ei voi enää luottaa. Opas on säilytetty vain sen historiallisen arvon vuoksi. ⚠
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.
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) |
Luvut 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).
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; ?>
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ä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; ?>
Lukujen tai muuttujien väliset laskutoimitukset merkitään tuttujen merkkien avulla: yhteen- (+
), vähennys- (-
), kerto- (*
) ja jakolasku (/
). Lisäksi jakojäännös merkitään %
. Laskujärjestystä voi myös muuttaa suluilla.
<?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.
laskutoimitus | lyhennetty muoto |
---|---|
$a = $a + $b | $a += $b |
$a = $a - $b | $a -= $b |
$a = $a * $b | $a *= $b |
$a = $a / $b | $a /= $b |
$a = $a + 1 | $a++ |
$a = $a - 1 | $a-- |
$a = $a + 1 | ++$a |
$a = $a - 1 | --$a |
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 ?>
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 ?>
Jos skriptissä esiintyy useita samantyyppisiä muuttujia, on järkevää luoda niistä taulukko. Taulukko sisältää joukon arvoja, joihin viitataan yksilöllisillä tunnuksilla eli indekseillä. Tunnuksien 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. Jos ilmoitetaan pelkät arvot, niiden indekseinä ovat numerot järjestyksessä nollasta alkaen. Toinen vaihtoehto on ilmoittaa myös indeksit taulukon määrittelyn yhteydessä.
<?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 merkitsemättä, 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 on usein suurta hyötyä skriptin toteutuksessa. Täydellinen lista taulukkofunktioista löytyy PHP:n manuaalista.
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.
Antti Laaksonen, 1.3.2003
Onko tulossa vielä kolmas osa? Kannattaisi seuraavassa esitellä esimkerkiksi evästeet ja esimerkiksi $_GET ja $_Post
Tokihan oppaaseen lisää osia tulee. Kolmannessa osassa on tietoa ehto- ja silmukkalauseista - neljännestä osasta löytyy mm. lomakkeiden käyttö.
Aarg! Pois tuo Datsun tuolta, se kolhi meidän autoa viime syksynä! :D
Kurja juttu, kuitenkaan syyllinen ei ollut auto vaan sen ajaja. Laitoin kuitenkin Daihatsun sen tilalle. :)
Seuraaviin osiin tietoa date()-funktiosta, se on tärkeä...
Äh, mun äidin edellinen auto oli Daihatsu ja sekin ihan syvältä... :D
Tuohan on melkeen yhtä selkeetä kuin Pascal muinoin :)
Näin hieman myöhässä muhiin nähden luen tätä, mutta hyvä opas.
Jotta joka vuosi tulis tälle oppaalle kommenttia, nii kehun itekki tätä. Hyvä opas :)
Tosi hyvä opas. Opettelen koko ajan tästä oppaasta PHP:tä. Tottakai valmiista scriptistä oppii paljon.
Kysymys olis tällaisesta merkinnästä (operaattorista?) eli tämä merkki: "=>"
Mikä olisi sen määritelmä(tarkoitus jne)? Jos joku voisi valistaa.
Taulukoiden alkioihin sillä ilmeisesti viitataan yllä olevissa esimerkeissä:
$kaupungit = array("Ruotsi" => "Tukholma", "Saksa" => "Berliini", "Suomi" => "Helsinki");
=> on operaattorina ainakin visual basicissa pienempi kuin tai saman arvoinen kuin.
eli if (2 = 3 or 2 > 3) ...
palauttaisi sen mukaan saman kuin
if (2 => 3) ...
edit: jooniinno php:ssähän validi muoto on >=
ei se tässä sitä tarkoita, ellen väärin ymmärtänyt
PHP:ssä >= tarkoittaa suurempaa tai yhtäsuurta.
Ja loogisesti <= on pienempi tai yhtäsuuri.
siis tuo => merkitsee vain sen että "ruotsi" => "tukholma"
ruotsi on taulukon alkion nimi ja => kertoo että sen sisältö
on tukholma
Siis vähä hyvä opas!
Jep
Aijai, melkein vuosi edellisestä kommentista. Korjataan tilannetta. Mahtava opas. Erittäin paljon hyötyä on ollut.
Joo erittäin hyödyllinen opas, ensimmäinen PHP-opas, josta ymmärrän jotain xD
Hirveen hyvä, nyt ymmärrän jotain array() funktiostakin! :)
good opas
Veri guud
ettei mee putki rikki ni, helpottaa paljon itseopiskelua, loistava!
Näitä voisi havainnollistaa Ohjelmointiputkan palvelimella olevilla esimerkeillä?
Hyvä opas ymmärsin edes jotain.
ja jotta combo ei menisi vielläkään rikki niin hyvä opas!
Huomio! Kommentoi tässä ainoastaan tämän oppaan hyviä ja huonoja puolia. Älä kirjoita muita kysymyksiä tähän. Jos koodisi ei toimi tai tarvitset muuten vain apua ohjelmoinnissa, lähetä viesti keskusteluun.