MUUTTUJAT JA VAKIOT

PHP:ssa, kuten muissakin ohjelmointikielissä, muuttujia käytetään tiedon talletuspaikkana. Muuttujalle annetaan symbolinen nimi, nimi jolla kuvataan siihen tallennettua tietoa. Muuttujaan voidaan sijoittaa ohjelmassa arvo. Laajemmin, muuttujiin voidaan sijoittaa numero-arvoja, kirjaimia tai merkkejä. Muuttujaksi voidaan määritellä myös taulukko.

Esimerkki käytännön muuttujasta, lompakko, jonne voidaan laittaa (sijoittaa) rahaa (numeroarvo) ja lompakosta voidaan ottaa rahaa, mikäli lompakossa on rahaa.
Muuttujiin voidaan laskea ja sijoittaa tieto, mutta muuttujaan voidaan sijoittaa myös www-sivulta syötetty tieto lomakekentän avulla. Lomakekentistä ja niiden käyttämisestä löydät tietoa kohdasta Lomakkeet.

Vakio tarkoittaa esimerkiksi numero-arvoa, esimerkiksi piin likiarvo, tällöin vakion nimi olisi PI ja sen numeroarvo voisi olla 3.14. Vakiot voivat olla paikallisia tai globaaleja.

MUUTTUJIEN KÄYTTÖ

Muuttujat esiteltävä eli määriteltävä ennen niiden käytöä. Muuttujat kannattaa esitellä PHP-koodauksen alussa. PHP-kielessä on neljä perustietotyyppiä joita voidaan muuttujiin tallentaa:

Muuttujat Selite
Kokonaisluku $luku1 = 10;
Merkkijono $teksti = "iltaa";
echo "Hyvää " . $teksti . ".";
Desimaaliluku $luku1 = 0.5;
Taulukot $autot = array("Aston Martin", "Ford", "Audi");
echo "Autoja " . $autot[0] . ", " . $autot[1] . " ja " . $autot[2] . ".";


PHP:ssa ei tarvitse määritellä muuttujien tyyppejä erikseen sen mukaan minkälaista tietoa niihin tallennetaan


MUUTTUJIEN NIMEÄMINEN

Muuttujien määrittelyn yleismuoto on:

$nimi = sijoitettava tieto;

Muuttujat on hyvä nimetä kuvaamaan sitä tietoa mitä sinne talletaan, huomaa määrittely päättyy puolipisteeseen. Alla, esimerkkejä muuttujien määrittelyistä.

$luku1;
$Luku2 = 0;
$Luku_3 = 3.14;
$taulukko_pisteet = array(23.5, 45.5, 12);


Muuttujan nimi koostuu kirjaimista tai numeroista. Ensimmäisen merkin on oltava kirjain (myös alaviiva on sallittu). Kirjaimina voi käyttää sekä isoja että pieniä kirjaimia mutta ne merkitsevät eri asiaa.
Alla, sama sana muuttujan nimenä erilailla kirjoitettuna, joten kyseessä on eri muuttujat.

$max;
$Max;
$MAX;
$Luku_1;
$luku1;
$luku_1;


HUOM! Muuttujien nimissä ei ole suositeltavaa käyttää ä, Ä, ö, Ö, å tai Å kirjaimia !


KOKONAISLUKU-MUUTTUJAT

Kokonaisluku on positiivinen tai negatiivinen luku jossa ei ole desimaaliosaa. Mikäli muuttujalle halutaan antaa alkuarvo ohjelmoitaessa ohjelmaa, on ohjelmoijan se annettava.

$alkuarvo = 0;
$tunteja = 24;


Alustamattomien muuttujien käyttöä tulee välttää. Muuttujalla voi olla määrittelyvaiheessa mikä arvo tahansa ellei ohjelmoija alusta muuttujaa. Muuttujiin joita käytetään lukujen käsittelyssä alkuarvoksi kannattaa sijoittaa 0.

Alla esimerkki-ohjelmassa, PHP-ohjelman alussa kokonaislukumuuttujiin luku1 ja luku2 sen määrittelyn yhteydessä sijoitetaan alkuarvo.

/* Kokonaislukumuuttujan käyttö */ <!DOCTYPE HTML> <html lang="en"> <html> <head> <meta charset="UTF-8"> <title>TESTISIVU</title> </head> <body> <?php $luku1 = 5; $luku2 = 10; echo "$luku1 <br>"; echo $luku2; ?> </body> </html>



5
10


Tehtävä 1 Laske kolme eri kokonaislukua yhteen. - Arvot ovat 7, 3, 80.





DESIMAALILUKU-MUUTTUJAT

Esimerkkiohjelmassa määritellään aluksi kolme muuttujaa, paino1, paino2 ja paino3 joihin sijoitetaan desimaaliluvut. Huomaa, muuttujien nimet kuvaavat PHP-koodauksessa käsiteltävää asiaa.

/* Desimaalimuuttujien käyttö */ <?php $Paino1 = 70.8; $Paino2 = 120.9; $Paino3 = 80.2; echo $kesk = ($Paino1+$Paino2+$Paino3)/3; ?>



90.633333333333


Tehtävä 2 Touteuta PHP:llä kolmen vastuksen rinnankytkennän kokonaisvastuksen laskenta. - vastuksen arvot sijoitetaan muuttujien R1 R2 ja R3 arvoiksi. - muuttujiin sijoitetulla arvoilla lasketaan Rkok Rkok= 1/((1/R1)+(1/R2)+(1/R3))



Desimaaliluvun desimaalien määrä, pilkun käyttäminen ja yksiköiden merkitseminen.

/* Desimaalien määrä */ <?php $Luku = 3.3333333333; $Mitta = 12.454545; $Paino = 67.6666666; echo "Alkuperäiset arvot:<br> Luku = $Luku<br> Mitta = $Mitta<br> Paino = $Paino<br><br>"; echo "Desimaalit asetettuna:<br>"; $Luku = number_format($Luku, 2,',',' '); echo "Luku = $Luku<br>"; $Mitta = number_format($Mitta, 2,' m ',' '); echo "Mitta = $Mitta cm<br>"; $Paino = number_format($Paino, 3,' kiloa ',' '); echo "Paino = $Paino grammaa<br>"; ?>



Alkuperäiset arvot:
Luku = 3.3333333333
Mitta = 12.454545
Paino = 67.6666666

Desimaalit asetettuna:
Luku = 3,33
Mitta = 12 m 45 cm
Paino = 67 kiloa 667 grammaa





MERKKIMUUTTUJAT

Merkkimuuttuja voi olla kirjain, teksti, numeroarvo, näppäimistöltä annettu muu merkki esim sulkumerkkiä tai kaikkien em yhdistelmä.

/* Merkkimuuttujien käyttö */ <?php $teksti = "vihreät miehet"; echo "Pienet " . $teksti . " ?"; ?>


Pienet vihreät miehet ?


Tehtävä 3 Sijoita alla olevat aforismit muuttujiin. Näytä aforismit yhdellä echo:lla, huomaa rivinvaihdot. Vinkki: lainausmerkin näytäminen PHP:ssä \" merkeillä. "Lähes kaikki suuri on nuorten tekemää." - Benjamin Franklin "Nuoressa ei huilaaminen mene hukkaan." - Suomalainen sananlasku "Nuoret ovat säännöllisesti ajattelemattomia." - Homeros



CSS-ohjeiden käyttäminen tekstin esittämisessä.

Esimerkeissä muutama tapa CSS-ohjeiden liitämiseksi PHP-koodaukseen.
Esimerkin CSS-ohjeet löydät täältä. Huomaa esimerkissä p-elementin ohje muotoilee www-sivun kaikki p-tekstielementit:


<?php echo "<p style='color:BLUE'> Sininen teksti <br></p>"; echo "<p class='vihrea'> Muotoilun liittäminen class-määritteellä. <br></p>"; ?> <div class="violetti koko"> <?php $teksti1 = "Googlen fontti, fontin-väri ja -koko div:n avulla."; echo $teksti1 . "<br>"; echo "Tutustu myös Taulukot-kohdassa käytettyyn CSS-muotoiluun."; ?> <div>


Alla tulos www-sivulla.


Sininen teksti

Muotoilun liittäminen class-määritteellä.

Googlen fontti, fontin-väri ja -koko div:n avulla.
Tutustu myös Taulukot-kohdassa käytettyyn CSS-muotoiluun.



Taulukon merkkien toimintaa ei ole vielä testattu !!!!!

Koodi Selite
\b "Backspace", vastaa toiminnaltaan ko painikkeen painallusta.
(Enter-painikkeen yläpuolella)
\r "vaununpalautus", kursorin siirtäminen rivin lopusta rivin alkuun.
\" Lainausmerkki, käytetään tulostamaan www-sivulle tekstiin merkkejä
joita käytetään muutoin tulostamisen ohjainmerkkeinä.
\f "Sivunsyöttö", siirtää kursorin "toiselle sivulle".
\n Rivinvaihto.
\0 Null-arvo.
\' Heittomerkki.
\t Vaakatabulointi, siirtää kursoria oikealla.
\v Pystytabulointi, siirtää kursoria alas.



VAKIOT

Vakiot ovat tunnisteita ja arvoja, joita ei voi muuttaa esimerkiksi laskutoimituksessa. Vakio voi olla minkä tahansa perustietotyypin mukainen.

define ("ALV", 24); define ("TEKSTI", "Tähän kohtaan teksti.");

Vakion arvoa ei voi muuttaa ohjelman suorituksen aikana. Muuttujille annettuja alkuarvoja voidaan muuttaa ohjelman suorituksen aikana.

<?php define("TEKSTI", "Tervetuloa. Vakio-esimerkki !"); define("PII", 3.14); echo TEKSTI . " " . PII; ?>

Tervetuloa. Vakio-esimerkki ! 3.14


Tehtävä 4 Toteuta seuraava pallon pinta-alan laskeva teksti. Etsi pallon pinta-alan laskukaava, PHP:llä toteutetun laskun tulos näytetään XXX-merkkien kohdalle. Määrittele vakioiksi PI sekä näytä echo:lla sivustolle teksti ja tulos: "Kun pallon säde on 10, on pallon pinta-ala XXX."




TAULUKOT

Taulukko on eräänlainen "luettelo", joka PHP:ssä voi koostua erityyppisistä muuttujista. Taulukon muuttujilla on yhteinen nimi, taulukon nimi. Jokaiseen yksittäiseen alkioon liittyy kokonaislukunumero, indeksi. Indeksien arvot ovat aina positiivisia kokonaislukuja. Taulukon ensimmäinen indeksi on nolla (0).

Taulukon käyttöön ja määrittelyyn liityvät säännöt:
• taulukolla on oltava nimi
• taulukon alkioihin viitataan kokonaisluvulla tai muuttujalla
• taulukossa voi olla yksi- tai kaksiuloitteinen

Yksiulotteisen taulukon yleismuoto:

$taulukonnimi = array(alkion 1 sisältö, alkion 2 sisältö, ...);


Example pic

Taulukoiden alustaminen:
Taulukoiden alkioille voidaan antaa arvot samalla kun taulukko määritellään.

$lukuja = array(1, 1.5, 10, 10.85, 100);

Taulukkoon alustuksessa voidaan sijoittaa tekstiä.

$nimet = array("Aulis","Bertta","Cecilia","David","Erkki");

Moniulotteiset taulukot
Moniulotteiset taulukot määritellään lähes samalla tavalla kuin yksiulotteiset taulukot. Alla, kaksiuloitteinen taulukko jossa on kaksi riviä ja kolme saraketta.

$taulukon_nimi = array ( array(alkio_0/0, alkio_0/1, alkio_0/2), array(alkio_1/0, alkio_1/1, alkio_1/2) );

Moniulotteisen taulukon alustaminen:
Alustus toimii samalla periaatteella kuin yksiuloitteisessa taulukossa.

$juomat = array ( array("Jaffa", "1,5 litraa", 2), array("Pepsi Light", "1 litraa", 2.1) );



Esimerkkejä yksiuloitteisista taulukoista


Esimerkissä painot-taulukossa on lukuja, sijoitetuista luvuista lasketaan keskiarvo kahdella erilaisella tavalla. Ensimmäisessä keskiarvo lasketaan taulukon indeksien avulla, toisessa array_sum()-yhteenlasku-funktion ja count()-funtiolla lasketun taulukon koon avulla:

<?php $painot = array("70.8","120.9","80.2"); echo "Taulukon sisältö:<br>"; echo "$painot[0] $painot[1] $painot[2]" . "<br>"; echo "Keskiarvo laskettuna kahdella tavalla:<br>"; $Kesk = ($painot[0] + $painot[1] + $painot[2])/3; echo $Kesk . "<br>"; $Kesk = array_sum($painot) / count($painot); echo $Kesk; ?>

Taulukon sisältö:
70.8 120.9 80.2
Keskiarvo laskettuna kahdella tavalla:
90.633333333333
90.633333333333


Tehtävä 5 Sijoita taulukkoon kolme vastuksen arvoa. Laske vastusten rinnankytkennän arvo taulukon neljänteen alkioon. Näytä www-sivulle taulukon sisältö seuraavasti: R1 = arvo Ω R2 = arvo Ω R3 = arvo Ω Rkok = arvo Ω




Alla sovelletaan yksiuloitteista taulukkoa näyttämällä taulukossa olevat tekstit muun tekstin jatkoksi:

<?php $osat = array("Mangoa", "Kiiviä", "Melonia", "Persikkaa", "Greippiä"); echo "Juoma on sekoite " . $osat[0] . ", " . $osat[1] . ",<br>" . ", " . $osat[2] . ", " . $osat[3] . " ja " . $osat[4] . "."; ?>

Juoma on sekoite Mangoa, Kiiviä,
Melonia, Persikkaa ja Greippiä.


Tehtävä 6 Kokeile saatko näytettyä Moniuloitteisen taulukon alustaminen -kohdassa olevan juomat-taulukon sisällön.




Taulukkoon sijoitettujen alkioiden määrä voidaan kätevästi laskea count()-funktiolla. Vaihtoehtoinen funktio on sizeof().

<?php $hedelmat = array("Mango", "Kiivi", "Meloni"); echo count($hedelmat); ?>



3


Tehtävä 7 Kopioi PHP-esimerkki (yllä) ja tarkista sen toiminta. Lisää taulukkoon yksi hedelmä sekä lisää count()-funktion alle rivinvaihto sekä sizeof()-funktio. Kokeile toimivatko lisäykset.




Esimerkissä (alla) tulostetaan for-lauseella taulukon sisältö alekkain.

<?php $hedelmat = array("Mango", "Kiivi", "Meloni"); $koko = count($hedelmat); for($rivi = 0; $rivi < $koko; $rivi++) { echo $hedelmat[$rivi]; echo "<br>"; } ?>



Mango
Kiivi
Meloni



 

Tehtävä 8 Tee oppilas-niminen taulukko jossa on 7 riviä. Sijoita taulukon 1. riville oppilaan nimi (Sukunimi Etunimi). Sijoita neljälle seuraavalla erilaisia pisteitä 0 - 100 väliltä. Sijoita riveille 6 ja 7 alkuarvoksi nolla. Tee laskutoimitus joka laskee yhteen rivien 2 - 5 pisteet ja sijoittaa tuloksen kuudennelle riville. Näytä taulukon sisältö välilyönnein erotettuna-


Esimerkkejä moniuloitteisista taulukoista

Seuraavassa esimerkissä luodaan PHP:llä kuvan mukainen taulukko sekä näytetään taulukko.

taulukko2
Kaksi-uloitteinen varasto-taulukko.


Kuvan taulukon PHP-koodaus.
Esimerkissä taulukon näyttämiseen käytetty echo:t jaettu kahdelle riville tämän oppaan rajoitteiden takia.
Varasto-taulukko näytetään www-sivulle kahdella erilaisella tavalla.

<?php $varasto = array ( array("TUOTE","MALLI","VARASTO","TILATTU","TOIMITETTU"), array("Skoda","Octavia",32,23,16), array("Skoda","SuperB",15,9, 7), array("Volvo","V90",10,4,3) ); echo "Taulukon sisältö (tapa 1):<br>><br>"; echo $varasto[0][0]." ".$varasto[0][1]." ".$varasto[0][2]." ". $varasto[0][3]." ".$varasto[0][4]."<br>"; echo $varasto[1][0]." ".$varasto[1][1]." ".$varasto[1][2]." ". $varasto[1][3]." ".$varasto[1][4]."<br>"; echo $varasto[2][0]." ".$varasto[2][1]." ".$varasto[2][2]." ". $varasto[2][3]." ".$varasto[2][4]."<br>"; echo $varasto[3][0]." ".$varasto[3][1]." ".$varasto[3][2]." ". $varasto[3][3]." ".$varasto[3][4]."<br>"; echo "<br>Taulukon sisältö (tapa 2):<br>><br>"; for($rivi=0;$rivi<4;$rivi++) { for($sarake=0;$sarake<5;$sarake++) { echo $varasto[$rivi][$sarake]." "; } echo "<br>"; } ?>



Taulukon sisältö (tapa 1):

TUOTE MALLI VARASTO TILATTU TOIMITETTU
Skoda Octavia 32 23 16
Skoda SuperB 15 9 7
Volvo V90 10 4 3

Taulukon sisältö (tapa 2):

TUOTE MALLI VARASTO TILATTU TOIMITETTU
Skoda Octavia 32 23 16
Skoda SuperB 15 9 7
Volvo V90 10 4 3



Edellinen esimerkki oli www-sivulle näytettynä on sekava, alla esimerkissä hiukan selkeämmin muotoiltuna sama taulukko.
(Taulukkojen muotoilut voi tehdä esim täällä.)

TUOTEMALLIVarastoTilattuToimitettu
SkodaOctacia322316
SkodaSuperB1597
VolvoV901043


Yllä olevan taulukon PHP-koodaus sekä generaattorilla toteutetun CSS-muotoilun liittäminen taulukkoon:

<div class="CSSTableGenerator" > <?php echo "<table> <tbody><tr> <th> TUOTE </th> <th> MALLI </th> <th> Varasto </th> <th> Tilattu </th> <th> Toimitettu </th> </tr>"; $varasto = array( array("Skoda","Octacia","32","23","16"), array("Skoda","SuperB","15","9","7"), array("Volvo","V90","10","4","3"), ); for ($rivi = 0; $rivi <= count($varasto)-1; $rivi++) { echo "<tr>"; for ($sarake = 0; $sarake <= 4; $sarake++){ echo "<td>". $varasto[$rivi][$sarake] ."</td>"; } echo "</tr>"; } echo "</tr></tbody></table>"; ?> </div><br>


Esimerkkitaulukon CSS-muotoilun löydät täältä. Kopioi CSS-ohje ja liitä ohje sivun style-tiedostoon.

Esimerkkejä erilaisten taulukkojen rakentamisesta löydät linkeistä tai hakukoneilla termillä PHP table.
Github.com - erityylisiä taulukoita, ei sisällä CSS-muotoiluja.
http://html-generator.weebly.com -erilaisia generaattoreita.


 

Tehtävä 9 Tee 3 * 7 kaksiuloitteinen taulukko. Sijoita taulukkoon luvut 1 - 21. Tulosta taulukon sisältö kahden for-lauseen avulla.


Tehtävä 10 Muokkaa tehtävä 9 kaksi-uloitteista taulukkoa seuraavasti: 1. sarakkeisiin talletaan oppilaan nimi (esim Matti Markkanen). Rivien 2 - 5 sarakkeisiin koepisteet 0 - 100 . Rivien 6. sarakkeisiin lasketaan yhteispisteet. 7. sarakkeisiin tulee arvosana myöhemmin lisättävällä if-rakentteella joka antaa arvosanan yhteispisteiden perusteella. Pisterajat arvosanoille: jos pisteet pienempi kuin 120 -> 0 jos pisteet on 120 tai pienempi kuin 176 -> 1 jos pisteet on 176 tai pienempi kuin 232 -> 2 jos pisteet on 232 tai pienempi kuin 288 -> 3 jos pisteet on 288 tai pienempi kuin 344 -> 4 jos pisteet on 344 tai pienempi kuin 400 -> 5




Taulukossa erilaisia funktioita taulukon sisällön järjestämiseen.

Merkki Selite Esimerkki
sort() Järjestää taulukon suurimmasta pienimpään / A:sta - Z:taan Esimerkki
rsort() Järjestää taulukon pienimmästä suurimpaan / Z:sta - A:han Esimerkki
asort() Järjestää taulukon suurimmasta pienimpään luvun mukaan Esimerkki
ksort() Järjestää taulukon suurimmasta pienimpään kirjaimen mukaan Esimerkki
arsort Järjestää taulukon pienimmästä suurimpaan luvun mukaan Esimerkki
krsort Järjestää taulukon pienimmästä suurimpaan kirjaimen mukaan Esimerkki


Taulukoiden solujen nimeäminen

Taulukoiden solujen nimiä kutsutaan myös avaimeksi. Solun nimellä voidaan hakea taulukosta tieto esim www-sivulle näytettäväksi tai laskutoimitukseen. Kuvassa alla, marjat-taulukon soluille on annettu nimiksi soluA, soluB, soluC ja soluD.

taulukko
Taulukon solujen nimeäminen.


Kuvan marjat-taulukossa soluA - soluD ovat avaimia eli taulukon solun nimiä. Taulukon varsinaisena sisältönä eli arvoina (value) on erilaisia marjoja. Kuvan taulukko voidaan toteuttaa PHP:llä seuraavasti:

<?php $marjat = array("soluA"=>"Mansikka", "soluB"=>"Mustikka", "soluC"=>"Puolukka", "soluD"=>"Lakka"); echo $marjat['soluA'] . "<br>"; echo $marjat['soluB'] . "<br>"; echo $marjat['soluC'] . "<br>"; echo $marjat['soluD']; ?>


Mansikka
Mustikka
Puolukka
Lakka



 

Tehtävä 11 Tee taulukko jossa on kolmen kokeen pisteet sekä varattu yhteispisteitä varten yksi rivi. Nimeä koepiste-rivit koe1-koe3 nimisiksi sekä sijoita riveille koepisteet numerona. Laske koepisteet yhteen yhteispiste-nimiselle riville käyttämällä rivien nimiä laskutoimituksessa.



Katso myös esimerkki täältä.

Kolmi-uloitteinen taulukko

Kolmi-uloitteissa taulukossa on kaksi tai useampi kaksi-uloitteinen taulukko yhdistetty yhdeksi kokonaisuudeksi.

taulukko3
Kolme kaksiuloitteista taulukkoa on yhdistettynä on kolmi-uloitteinen.


Moni-uloitteisen taulukon tulostaminen listana:
(Lähde)

<?php $multiTaulu = array(array(array("Taulukko 1", 1.25, 15), array("Luvut 1", 10, 20), array("Luvut 1", 110, 120) ), array(array("Taulukko 2", 1.25, 15), array("Luvut 2", 20, 30), array("Luvut 2", 220, 230) ), array(array("Taulukko 3", 1.25, 15), array("Luvut 3", 30, 40), array("Luvut 3", 330, 340) ) ); echo "<ul>"; for ( $taso = 0; $taso < 3; $taso++ ) { echo "<li>Taulukko $taso"; echo "<ul>"; for ( $rivi = 0; $rivi < 3; $rivi++ ) { echo "<li>Rivi $rivi"; echo "<ul>"; for ( $sarake = 0; $sarake < 3; $sarake++ ) { echo "<li>".$multiTaulu[$taso][$rivi][$sarake]."</li>"; } echo "</ul>"; echo "</li>"; } echo "</ul>"; echo "</li>"; } echo "</ul>"; ?>


  • Taulukko 0
    • Rivi 0
      • Taulukko 1
      • 1.25
      • 15
    • Rivi 1
      • Luvut 1
      • 10
      • 20
    • Rivi 2
      • Luvut 1
      • 110
      • 120
  • Taulukko 1
    • Rivi 0
      • Taulukko 2
      • 1.25
      • 15
    • Rivi 1
      • Luvut 2
      • 20
      • 30
    • Rivi 2
      • Luvut 2
      • 220
      • 230
  • Taulukko 2
    • Rivi 0
      • Taulukko 3
      • 1.25
      • 15
    • Rivi 1
      • Luvut 3
      • 30
      • 40
    • Rivi 2
      • Luvut 3
      • 330
      • 340