📦 Mainīgie un datu tipi
Mainīgie ir "konteineri", kuros saglabā datus. PHP ir dinamiski tipizēta valoda – mainīgā tips tiek noteikts automātiski, pamatojoties uz piešķirto vērtību.
Mainīgo pamati
PHP mainīgie vienmēr sākas ar dolāra zīmi ($). Mainīgā nosaukums var saturēt burtus, ciparus un pasvītrojumus, bet nevar sākties ar ciparu.
ℹ️ Mainīgo nosaukumiPHP mainīgie ir reģistrjutīgi: $Vards un $vards ir divi dažādi mainīgie. Labā prakse ir izmantot camelCase ($lietotajaVards) vai snake_case ($lietotaja_vards).
<?php // Mainīgā piešķiršana $vards = "Anna"; // string (virkne) $vecums = 25; // integer (vesels skaitlis) $augstums = 1.68; // float (decimālskaitlis) $students = true; // boolean (patiess/aplams) $aizraušanas = null; // null (nav vērtības) // Izvadīšana echo $vards; // Anna echo "<br>"; echo $vecums; // 25 echo "<br>"; echo var_dump($students); // bool(true) ?>
PHP datu tipi
| Tips | Piemērs | Apraksts |
|---|---|---|
| int | 42, -7, 0 | Vesels skaitlis |
| float | 3.14, -0.5 | Decimālskaitlis (peldošais komats) |
| string | "Sveiki", 'Jānis' | Teksts (virkne) |
| bool | true, false | Patiess vai aplams |
| array | [1, 2, 3] | Masīvs (datu kolekkcija) |
| null | null | Nav vērtības |
| object | new Klase() | Objekts (no klases) |
Virknes var definēt ar vienpēdiņām vai dubultpēdiņām. Dubultpēdiņās mainīgie tiek interpolēti.
<?php
$vards = "Pēteris";
// Dubultpēdiņas - mainīgie tiek interpolēti
echo "Sveicināts, $vards!<br>"; // Sveicināts, Pēteris!
echo "Garums: {$vards}<br>"; // Garums: Pēteris
// Vienpēdiņas - mainīgie NETIEK interpolēti
echo "Sveicināts, $vards!<br>"; // Sveicināts, $vards!
// Savienošana ar punktu
$pilnsVards = "Pēteris" . " " . "Kalniņš";
echo $pilnsVards . "<br>"; // Pēteris Kalniņš
// Speciālās rakstzīmes dubultpēdiņās
echo "Rindas pārtraukums:\n"; // \n = jauna rinda
echo "Tabulēšana:\t teksts\n"; // \t = tabulēšana
echo "Pēdiņas: \"PHP\"\n"; // \" = pēdiņas virknē
?>
<?php
$vesels = 42;
$negatīvs = -100;
$heksadecimāls = 0x1A; // Heksadecimālais (= 26)
$binārs = 0b1010; // Binārs (= 10)
$decimāls = 3.14;
$zinātniskā = 1.5e3; // = 1500.0
echo $heksadecimāls . "\n"; // 26
echo $binārs . "\n"; // 10
echo $zinātniskā . "\n"; // 1500
// PHP 7.4+ - pasvītrojums skaitļos (lasāmībai)
$lielsSkaitlis = 1_000_000;
echo $lielsSkaitlis; // 1000000
?>
<?php
$patiess = true;
$aplams = false;
// "Aplamas" vērtības PHP (falsy values)
var_dump((bool) 0); // bool(false)
var_dump((bool) ""); // bool(false)
var_dump((bool) "0"); // bool(false)
var_dump((bool) null); // bool(false)
var_dump((bool) []); // bool(false)
// "Patiesas" vērtības
var_dump((bool) 1); // bool(true)
var_dump((bool) "sveiki"); // bool(true)
var_dump((bool) [0]); // bool(true) - masīvs ar elementiem
?>
Tipu konversija (Type casting)
PHP var automātiski vai manuāli konvertēt datu tipus.
<?php
// Manuāla tipu konversija
$teksts = "42 gadi";
$skaitlis = (int) $teksts; // 42
$decimāls = (float) "3.14abc"; // 3.14
$virkne = (string) 100; // "100"
$masivs = (array) "viens"; // ["viens"]
echo $skaitlis . "<br>";
echo $decimāls . "<br>";
// Tipu pārbaude
var_dump(is_int(42)); // bool(true)
var_dump(is_string("teksts")); // bool(true)
var_dump(is_float(3.14)); // bool(true)
var_dump(is_null(null)); // bool(true)
var_dump(is_array([1,2,3])); // bool(true)
// gettype() atgriež tipa nosaukumu kā virkni
echo gettype(42) . "<br>"; // integer
echo gettype(3.14) . "<br>"; // double
echo gettype("vārds") . "<br>"; // string
echo gettype(true) . "<br>"; // boolean
echo gettype(null) . "<br>"; // NULL
?>
Konstantes
Konstantes ir mainīgie, kuru vērtību nevar mainīt pēc definēšanas. Tos definē ar define() vai const atslēgvārdu.
<?php
// define() - var izmantot jebkurā vietā failā
define("PI", 3.14159);
define("VIETNES_NOSAUKUMS", "Webpamati.lv");
define("MAKSIMUMS", 100);
echo PI . "<br>"; // 3.14159
echo VIETNES_NOSAUKUMS . "<br>"; // Webpamati.lv
// const - tiek definēts kompilācijas laikā (izmanto klasēs un globāli)
const VERSIJA = "1.0.0";
echo VERSIJA . "<br>"; // 1.0.0
// Iebūvētās konstantes
echo PHP_VERSION . "<br>"; // 8.3.x
echo PHP_EOL; // Rindas pārtraukums
echo PHP_INT_MAX . "<br>"; // Lielākais integer
echo PHP_FLOAT_EPSILON . "<br>"; // Mazākā float atšķirība
echo __FILE__ . "<br>"; // Pilns faila ceļš
echo __LINE__ . "<br>"; // Pašreizējā rindiņa
echo __DIR__ . "<br>"; // Direktorija
?>
Mainīgo darbības joma (Scope)
PHP mainīgajiem ir darbības joma – vieta kur tie ir pieejami. Atšķirībā no daudzām citām valodām, PHP funkcijās nav pieejami globālie mainīgie bez īpaša norādījuma.
⚠️ Bieža kļūdaIesācēji bieži aizmirst, ka funkcijā nevar tieši piekļūt globālajam mainīgajam. Jāizmanto global atslēgvārds vai jānodod mainīgais kā parametrs.
<?php
$globālais = "Es esmu globālais mainīgais";
function pierādīt(): void {
// Šeit $globālais NAV pieejams!
// echo $globālais; // Kļūda!
// Lai piekļūtu globālajam mainīgajam, jāizmanto global
global $globālais;
echo $globālais . "<br>";
$lokālais = "Es esmu lokālais mainīgais";
echo $lokālais . "<br>";
}
pierādīt();
// $lokālais šeit nav pieejams
// echo $lokālais; // Kļūda!
// Statiskais mainīgais - saglabā vērtību starp funkcijas izsaukumiem
function skaitītājs(): void {
static $skaits = 0;
$skaits++;
echo "Izsaukts: $skaits reizes<br>";
}
skaitītājs(); // Izsaukts: 1 reizes
skaitītājs(); // Izsaukts: 2 reizes
skaitītājs(); // Izsaukts: 3 reizes
?>
Noderīgas mainīgo funkcijas
🎓 Ko mācīties tālāk?
Nākamajā sadaļā aplūkosim PHP operatorus – kā veikt matemātiskās darbības, salīdzināšanu un loģiskās operācijas.
<?php
$mainīgais = 42;
$teksts = " Sveiki! ";
$tukšs = null;
// Pārbaude vai mainīgais eksistē
var_dump(isset($mainīgais)); // bool(true)
var_dump(isset($tukšs)); // bool(false) - null uzskata par neeksistējošu
// Pārbaude vai mainīgais ir "tukšs"
var_dump(empty($tukšs)); // bool(true)
var_dump(empty($mainīgais)); // bool(false)
var_dump(empty("")); // bool(true)
var_dump(empty(0)); // bool(true) - uzmanīgi!
// Dzēst mainīgo
unset($mainīgais);
var_dump(isset($mainīgais)); // bool(false)
// var_dump - detalizēta informācija par mainīgo
var_dump("virkne"); // string(6) "virkne"
var_dump(3.14); // float(3.14)
var_dump([1,2,3]); // array(3) { ... }
// print_r - cilvēkam lasāmāks formāts (noderīgi masīviem)
$masīvs = ["a" => 1, "b" => 2];
print_r($masīvs);
// Array ( [a] => 1 [b] => 2 )
?>