PHPPamokos.lt


4. Kintamieji ir matematika

Praktiškai bet kokios programavimo kalbos pagrindas yra kintamieji. Ši sąvoka atėjo iš paprasčiausios matematikos - mokykloje sprendžiame nelygybes kaip x + y = z, kur x, y ir z yra kintamieji. Jiems priskiriamos reikšmės, arba tos reikšmės sužinomos bei užpildomos tik išsprendus lygtį. Panašiai ir programavime, tame tarpe ir PHP. Šiuo atveju kintamasis žymimas dolerio ženklu prieš jo pavadinimą, pvz $x arba $y. Be abejo, galima ir patartina galvoti prasmingesnius pavadinimus, pvz $svoris arba $telefonas.

Tiesa, kaip jau minėjau praeitoje pamokoje, geriausia kodą rašyti anglų kalba, kad jį galėtų suprasti bet koks programuotojas iš bet kokio pasaulio krašto. Be to, tai jums priduoda profesionalumo. Tad patarčiau kintamuosius irgi vadinti angliškais žodžiais: $height, $phone, $surname ir t.t.

Priskirti reikšmę kintamajam paprasta:

$amount = 9;
$price = 2.80;
$title = "Labas rytas, Lietuva";
$sum = $amount * $price; // daugyba

Kaip matote, PHP kalboje kintamieji neturi savo tipo, skirtingai nuo kitų populiarių programavimo kalbų. Ar kintamasis yra sveikasis skaičius, ar trumpena, ar eilutė - PHP interpretatorius nustato pagal tai, kokia reikšmė kintamajam priskirta. Dar įdomiau tai, kad kintamasis skripto vykdymo metu gali keisti savo tipą - vėlgi priklauso nuo jam priskirtos reikšmės.

Tame yra ir pliusų, ir minusų. Pranašumas yra tai, kad kintamųjų nereikia atskirai apibrėžti, deklaruoti ar griežtai sekti jų tipus. Tačiau tas pats gali ir pakišti koją - galite netyčia sudėti eilutę su skaičiumi, ir tada programos vykdymo rezultatas gali būti neprognozuojamas, bet jūs sunkiai pastebėsite, kur įvyko klaida. Tad patarimas - naudokite prasmingus kintamųjų vardus, tai labai padės jums patiems.

Kintamojo pavadinimas turi būti vienas žodis be tarpų ir turi būtinai prasidėti raide. Pvz, kintamasis $2a bus neteisingas. Turbūt kyla klausimas, o ką daryti, jei norisi padaryti ilgesnį kintamąjį iš dviejų žodžių, kad jis būtų pilnai suprantamas? Yra keli variantai kaip atskirti žodžius - populiariausi yra du: didžiosiomis raidėmis (taip vadinamas "camelCase") arba pabraukimo ženklais:

$taxiPrice = 50;
$hours_wasted_here = 42;
$MySalary = $HourlyRate + $bonuses;

Tiesa, pradėti kintamojo didžiąja raide yra nepriimta, nors toks variantas veiktų ir nemestų jokios klaidos.

 

Matematinės operacijos

Taigi, ką galima veikti su kintamaisiais? Pradėkime nuo matematikos - tai visiškai nesudėtinga. Kad būtų suprantamiau, šįkart kintamųjų pavadinimus padariau lietuviškus.

$suma = $a + $b;
$skirtumas = $a – $b;
$daugyba = $a * $b;
$dalyba = $a / $b;
$liekana = $a % $b;

Galima atskirai papasakoti apie paskutinį veiksmą - liekana. Jis pakankamai dažnai naudojamas programavime, operacija % grąžina skaičių liekaną, kuri lieka po to, kai $a padalinama iš $b. Pavyzdžiui, 10 % 4 = 2, o 3 % 2 = 1. Jei kas nors mokykloje mokėsi Pascal kalbos, tai % operatorius atitinka Pascal operatorių mod.

Taip pat viename reiškinyje gali būti supinti skaičiai ir kintamieji.

$taxi_price = 2 + 2.25 * $distance;

Ir, atliekant sudėtingesnius matematinius užduotis, be abejo galios skliaustai ir įprasta matematinė veiksmų prioritetų tvarka - daugyba ir dalyba (ir liekanos operacija) bus atliekamos pirmiau nei sudėtis ir atimtis:

$price = (2 + $startPrice) * $peopleAmount;
 

Kintamieji - tekstinės eilutės

Jeigu kintamieji yra ne skaičiai, o teksto eilutės, tai su jais galima atlikti labai įvairius veiksmus, apie tai papasakosime atskirame skyrelyje. Pradžiai jums reikia žinoti tik tai, kaip sudėti dvi teksto eilutes į vieną kintamąjį. Tai atliekama su operacija "." (taškas), kuri reiškia dviejų eilučių sąjungą.

$word1 = "Labas";
$word2 = "rytas";
$word_without_spaces = $word1 . $word2;
$word_with_space = $word1 . " " . $word2;
 

Kintamųjų išvedimas į ekraną

Na ir, galiausiai, prie svarbiausio - kintamuosius, be abejo, galima pavaizduoti ekrane. Tai atliekama su ta pačia komanda echo. Įdomu, kad vienoje komandoje galima išvesti kelis kintamuosius, sujungiant juos taško operatoriumi.

$text = "Labas rytas";
echo $text;
echo $text . ", Lietuva!";
$price = 1.23;
$amount = 3;
$sum = $price * $amount;
echo "Suma: " . $sum . " Lt (" . $price . " Lt x" . $amount . ")";

Būtent čia kartais prireikia kartu išvesti PHP, kintamuosius ir HTML tekstą. Tiksliau, norime išvesti HTML kodą, kurio viduje kai kurie blokai turėtų PHP kintamuosius:

$text = "Labas rytas";
echo "<html><body>" . $text . "</body></html>";

Ir būtent čia reikia paminėti skirtumą tarp viengubų ir dvigubų kabučių. Kuo skiriasi šie sakiniai?

echo "Labas rytas";
echo 'Labas rytas';

Atsakymas - niekuo. Abu veiks visiškai vienodai. Skirtumas atsiranda tada kai tekste yra kintamųjų:

echo "Labas rytas, $country";
echo 'Labas rytas, $country';

Taip, galima kintamuosius išvesti tiesiog teksto viduje, nenaudojant taško operacijos ir neuždarant kabučių. Bet skirtumas yra tas, kad jeigu kabutės yra dvigubos, tada kintamasis bus pakeistas jo reikšme, o jei viengubos - tekstas liks su dolerio ženklu ir kintamojo vardu.

$country = 'Lietuva';
echo "Labas rytas, $country"; // naršyklė parodys "Labas rytas, Lietuva"
echo 'Labas rytas, $country'; // naršyklė parodys "Labas rytas, $country"

Yra ir dar trumpesnis kintamųjų išvedimas teksto viduje - nereikia net echo komandos. Jis naudojamas dažniausiai tada, kai visas failas yra HTML kodas ir tik kai kurios dalys yra PHP - kintamiesiems atvaizduoti:

<html>
<head>
<title><?=$title;?></title>
<body><?=$country;?></body>
</html>
 

Kintamųjų "matomumas"

Dažna situacija: sakykime, turime index.php failą, jame apibrėžiame kintamąjį $title = 'Lietuva'; ir tada darome include('header.php'). Ar kintamasis $title matysis tame kitame header.php faile? Atsakymas - taip, matysis. PHP failus vykdo iš eilės, tokia tvarka kaip jūs ir nurodėte. Konkrečiau:

index.php:
$title = 'Lietuva';
include('header.php');
echo $title; // išves "Latvija" (žr.žemiau)
header.php:
echo $title; // išves "Lietuva"
$title = "Latvija";

Kaip matote, galioja ir atgalinė taisyklė - jei include() failo viduje pakeitėte kintamojo reikšmę, jis grįžtą į pagrindinį skriptą jau pakeistas. Kitaip tariant, kintamasis "gyvuoja" visame programos vykdymo cikle, kad ir kiek include failų būtų. Tiesa, išimtis yra funkcijų viduje, bet apie tai kalbėsime, kai kursime savo funkcijas.

 

Namų darbas

Na, pasiruošę padirbėti? Jau tradiciškai, namų darbas bus susietas su mūsų kuriamu projektu. Šįkart siūlau index.php failo viduje apibrėžti tam tikrus norimus kintamuosius, ir juos išvesti atskirų blokų viduje. Apibrėžkite puslapio pavadinimą, apačioje esančią "copyright" eilutę, dar ką nors pagal savo nuožiūrą. Ir pažiūrėkite, ar kintamieji sėkmingai išsiveda ir parodomi naršyklėje. Tradiciškai jums paruošiau savo "teisingo atsakymo" variantą - archyvą parsisiųskite čia.



(c) 2015-2018. Visais klausimais kreipkitės povilas@laraveldaily.com