PHP-kielen perusteet Käytä lähteenä PHP:n virallista manuaalia http://www.php.net/docs.php tai http://www.hudzilla.org/php (siirry Paul Hudsonin verkkokirjaan). Lisää materiaalia suomeksi esimerkiksi ohjelmointiputkan PHP-opas. Tallenna itsellesi kopio tästä tiedostosta, kirjoita oma nimesi ja luokkasi ylätunnisteeseen. Vastaa sitten tehtäviin, talleta ja vie vastaus Optimaan kurssin palautuskansioon. 3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä. Heredoc syntaksi on tapa luoda merkkijonoja. Syntaksi koostuu aloitussymboleista, vapaavalintaisesta tunnisteesta, merkkijonon sisällön muodostavasta tekstistä ja uudelleen esiintyvästä tunnisteesta, joka lopettaa merkkijonon tulematta kuitenkaan yhdistetyksi siihen. Merkkijonon aloittaa kolme pienempi kuin-merkkiä <<< ja heti niiden perään annettu tunniste. Tunnisteen täytyy noudattaa PHP:n normaaleja muuttujannimeämissääntöjä, eli se saa koostua ainoastaan kirjaimista, numeroista ja alaviivoista ja se ei saa alkaa numerolla. Heredoc syntaksi soveltuu pitkien merkkijonojen luomiseen. Syntaksilla luodut merkkijonot käyttäytyvät samalla tavalla, kuin kaksinkertaisilla lainausmerkeillä rajatut, eli niiden sisältämät muuttujat ja erikoissymbolit tunnistetaan ja käsitellään. Ainoa poikkeus on, että tekstialueella esiintyviä lainausmerkkejä ei tarvitse edeltää \ symbolilla. Entä mitä tarkoittaa nowdoc? Kirjoita esimerkki myös tästä. - Käsky echo kirjoittaa näkyviin parametrina annetun merkkijonon tai muuttujan sisällön. Mitä seuraavat PHP-skriptit tulostavat? Testaa koodit ( XAMPPissa) ja kopioi kunkin tehtävän alle, mitä skriptit tulostavat. Opiskele asioita samalla. 3.2 <?php $kuka= "oma nimesi"; // Kirjoita edelle oma nimesi. //Lause päättyy puolipisteeseen $ammatti= "opiskelija"; # muuttujanimi eli tunnus alkaa merkillä $ echo "Tässä tervehdys\n"; echo "sinulle $ammatti $kuka!<br />"; echo 'Hei $kuka kuinka tämä onnistuu?<br />'; echo Miksi näin?<br /> ; Parse error: syntax error, unexpected 'näin' (T_STRING), expecting ',' or ';' in C:\xampp\htdocs\videnoja\testi.php on line 8
Yhteenlaskusta esimerkki 3.3 <?php $k = 1; $k = $k + "2"; $k = $k + "12. maaliskuuta"; echo "Tulokseksi saatiin $k! <br />"; Tulokseksi saatiin 15! Aritmeettisia operaattoreita ja matemaattisia funktioita (pow() ja sqrt()) 3.4 <?php $tekija = "<strong>oma nimesi tähän</strong>"; // korvaa lainausmerkkien sisään nimesi kohtaan oma nimesi tähän $a = 31; $b = 43; echo $tekija. " osaa laskea:<br />\n"; // operaattori. liittää tekstejä yhteen $summa = $a +$b; echo "Lukujen $a ja $b summa on $summa<br />\n "; $erotus = $a-$b; echo "Lukujen $a ja $b erotus on $erotus<br />\n "; $tulo = $a * $b; echo "Lukujen $a ja $b tulo on $tulo<br />\n "; $osamaara = $a / $b; echo "Lukujen $a ja $b osamaara on $osamaara<br />\n "; $jakojaannos = $a % $b; echo "Lukujen $a ja $b jakojäännös on $jakojaannos<br />\n "; echo "Potenssiin korotus lasketaan funktiolla pow(luku, potenssi) <br />\n "; $potenssi = pow($a, $b); echo "Luku $a potenssiin $b on $potenssi<br />\n "; echo "Neliöjuuri lasketaan funktiolla sqrt(luku) <br />\n "; $neliojuuri = sqrt($a); echo "Luvun $a neliöjuuri on $neliojuuri<br />\n "; Ville osaa laskea: Lukujen 31 ja 43 summa on 4 Lukujen 31 ja 43 erotus on -12 Lukujen 31 ja 43 tulo on 1333 Lukujen 31 ja 43 osamaara on 0.2093023255814 Lukujen 31 ja 43 jakojäännös on 31 Potenssiin korotus lasketaan funktiolla pow(luku, potenssi) Luku 31 potenssiin 43 on 1.344453212E+4 Neliöjuuri lasketaan funktiolla sqrt(luku) Luvun 31 neliöjuuri on 5.543283
Funktioita Pyöristysfunktioita on kolme round(), ceil() ja floor(). Funktiolla round() voi olla kaksi parametria, jolloin jälkimmäinen kertoo monenko desimaalin tarkkuudella pyöristetään. Funktioilla ceil() ja floor() voi olla vain yksi parametri. Miten nämä kaksi funktiota poikkeavat toisistaan? Ohje: testaa esimerkit alla ja/tai tutki funktioiden kuvauksia sivulta php.net 3.5 <?php echo "Pyöristetään round-funktiolla<br />\n "; $a = round(.9); echo "$a <br />\n "; $b = round(.5); echo "$b <br />\n "; $c = round(.4999); echo "$c <br />\n "; $d = round(.12345, 3); echo "$d <br />\n "; $e = round(.12345, 4); echo "$e <br />\n "; $f = round(1000 / 10); echo "$f <br />\n "; echo "funktiolla ceil<br />\n "; $a = ceil(.9); echo "$a <br />\n "; $b = ceil(.5); echo "$b <br />\n "; $c = ceil(.4999); echo "$c <br />\n "; echo "funktiolla floor<br />\n "; $a = floor(.9); echo "$a <br />\n "; $b = floor(.5); echo "$b <br />\n "; $c = floor(.4999); echo "$c <br />\n "; Pyöristetään round-funktiolla.123.1235 funktiolla ceil funktiolla floor Merkkijonon pituuden määritys funktiolla strlen() ja ehtolause if-else 3. <?php $kuka = "etunimesi sukunimesi";// korvaa oma nimesi tähän $pituus = strlen($kuka); // selvitä funktion strlen() toiminta PHP-oppaasta if ($pituus > 5) // vertailuoperaattori > eli suurempi kuin echo "Ihan kelpo $pituus merkkinen nimi: $kuka <br />"; else echo "Voiko nimessä olla vain $pituus merkkiä: $kuka <br />"; Ihan kelpo 14 merkkinen nimi: Ville Videnoja
!!!!!!MUISTA LÄHTEET!!!!!!! Operaattori.= sekä if-else lause ja vertailuoperaattori == yhtä suuri kuin 3. <?php $t = "kukkuluuruu"; $t.= "t! "; // uusi operaattori! Mitä se (.=) tekee? $n = 13; if (strlen($t) == $n){ // Vertaillaan lausekkeiden yhtäsuuruutta == echo "pituus on $n <br />"; } else echo "\$t on \"". $t. "\" eikä sen pituus siis ole $n<br />"; $t on "kukkuluuruut! " eikä sen pituus siis ole 13 Taulukon määrittelystä esimerkki (Näitä katsotaan lisää tunneilla) 3.8 <?php $palkka = 1000; $selite= "palkkio"; $aika[0] = "syyskuu"; // tämä luo taulukon ja alustaa sen alkion arvoksi tekstin $aika[1] = "lokakuu"; // alustamalla sen alkiot $aika["loppu"] = "marraskuu"; // aika erikoista, vai mitä echo "Tässä $selite $palkka \$ työstäsi"; echo " ajalta $aika[0], $aika[1] ja $aika[loppu] <br />"; /* huomaa ettei edellä viittauksessa tarvittu lainausmerkkejä $aika["loppu"] kun viittaus oli merkkijonon sisällä */ Tässä palkkio 1000 $ työstäsi ajalta syyskuu, lokakuu ja marraskuu Jatka seuraava skripti edellisen skriptin perään samaan tiedostoon. Esimerkki funktion count() käytöstä ja arvonmuunto-operaattoreita /=, *= <?php echo "Olet ollut töissä ". count($aika). " kuukautta.<br />"; $palkka /= count($aika); // laskee muuttujan $palkka arvoksi kuukausipalkan echo "Sait kuukausipalkkaa $palkka \$ koeajalta.<br />"; echo "Saat nyt korotusta 20% ja uusi kuukausipalkkasi on ". ($palkka *= 1.2). "\$<br />"; Tässä palkkio 1000 $ työstäsi ajalta syyskuu, lokakuu ja marraskuu Olet ollut töissä 3 kuukautta. Sait kuukausipalkkaa 333.33333333333 $ koeajalta. Saat nyt korotusta 20% ja uusi kuukausipalkkasi on 400$
Taulukon määrittelyyn ja alustamiseen toinen tapa ja taulukon läpikäynti foreach illa 3.9 <?php $a = array("t" => "tyydyttävä", "H" => "hyvä", "K" => "kiitettävä"); foreach ($a as $avain => $arvo) echo "$avain : $arvo<br>"; //tämä tehdään kaikille taulukon alkioille echo "<pre>"; echo. var_dump($a). "</pre>"; Parse error: syntax error, unexpected '.' in C:\xampp\htdocs\videnoja\testi.php on line // selvitä funktion var_dump() merkitys php.net sivuilta Dumppaa tiedot muuttujasta