Muutuja on suurus või sümbol, mis võib omada erinevaid väärtusi. Kord juba defineeritud konstanti aga muuta ei saa.
Nii muutuja kui konstanti nimi peab PHP-s algama ladina tähe või alakriipsuga. Sellele võib järgneda suvaline täht a-z, number 0-9 või alakriips.
Võimalik on küll kasutada ka täpitähti, kuid neid on soovitatav vältida.
Muutuja algab PHP-s dollarimärgiga. Muutuja nimi on tõstutundlik, st et $midagi ja $Midagi on kaks erinevat muutujat.
Harilike jutumärkide ja heredoc süntaksiga loodud sõnedes saab kasutada muutujaid, nt
$arv = 100; echo "\$arv = $arv"; // väljastab $arv = 100
Kui muutuja puutub kokku muu tekstiga siis tuleb see lisada loogelistesse sulgudesse:
$arv = 'sada'; echo "Neid on {$arv}tuhat"; // ilma lookadeta oleks $arvtuhat ja sellist muutujat ei leitaks
Samuti tuleb loogelistesse sulgudesse panna massiivimuutujad:
echo <<<eod
Su IP aadress on: {$_SERVER['REMOTE_ADDR']}
eod;
PHP-s on eeldefineeritud globaalmuutujad (predefined globals), mis on kättesaadavad igas skriptiosas. Nendeks on:
$_SERVER - sisaldab serverimuutujaid, nagu
$_SERVER['SERVER_NAME'] - serveri nimi
$_SERVER['SCRIPT_NAME'] - parasjagu töötava faili nimi
$_SERVER['HTTP_USER_AGENT'] - kasutaja brauseri identifikaator
$_SERVER['REMOTE_ADDR'] - kasutaja IP aadress
Kõiki serveri muutujaid näeb nii:
<pre> <?php print_r($_SERVER); ?>
$_SESSION - sessioonimuutujad
$_POST - vormilt saadetud POST muutujad
$_GET - aadressireal asuvad muutujad (nt ?tere=vanakere&pikkus=122)
$_COOKIES - küpsised
$_REQUEST - see sisaldab kõiki GET, POST ja COOKIES muutujaid
Lisaks on muutuja $GLOBALS, mis sisaldab kõiki skriptis defineeritud muutujaid.
Kõik nimetatud globaalmuutujad on massiivid ning nende sisu saab näha print_r funktsiooniga.
Muutujatega tegutsemiseks on mitmeid funktsioone. Mõne sõnaga olulisematest:
Funktsioon tagastab true kui argumendina antud muutuja on olemas:
$a = 1; if(isset($a)) { echo 'Muutuja $a on olemas'; }
Seda saab kasutada ka massiivi elementide olemasolu kontrollimiseks:
<?php $a = array(1=>'esimene', 2=>'teine'); if(!isset($a[3])) { echo 'elementi $a[3] ei ole olemas'; } ?>
tagastab true kui muutujal puudub väärtus:
<?php $a = ''; echo empty($a) ? 'tühi' : 'olemas'; // tühi $b = 0; echo empty($b) ? 'tühi' : 'olemas'; // tühi $c = array(); echo empty($c) ? 'tühi' : 'olemas'; // tühi $d = ' tere '; echo empty($d) ? 'tühi' : 'olemas'; // olemas ?>
Konstanti väärtus ei muutu. Konstanti nimi ei ole tõstutundlik st Konstant ja KONSTANT on mõlemad samad konstantid. Konstant defineeritakse define funktisooniga:
define('OLEN_KONSTANT', 12); echo OLEN_KONSTANT; // väljastatakse 12
Konstantidena on soovitatav kirjutada mySQL ühenduse andmed, töödeldavate failide nimed jms.
Seda kas konstant on juba defineeritud saab kontrollida funktsiooniga defined()
<?php define('FAILINIMI', 'aadressid.txt'); if(defined('FAILINIMI')) echo FAILINIMI; ?>
PHP-s on terve rodu eeldefineeritud konstante, neid saab näha järgmiste ridade abil:
<pre> <?php print_r(get_defined_constants()); ?>
…see väljastab sajad ning sajad nimed.
Mõned tihedamini vajaminevad konstantid on :
__FILE__ - skripti asukoht ja nimi failisüsteemis __LINE__ - reanumber, millel antud konstant asub __FUNCTION__ - kui see asub funktsioonis siis sisaldab vastavat funktsiooni nime __CLASS__ - kui see asub classis siis sisaldab vastavat classi nime
Jatkame avaldistega.