0%

📦 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.

php

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 nosaukumi

PHP 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).

Teksts
<?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

TipsPiemērsApraksts
int42, -7, 0Vesels skaitlis
float3.14, -0.5Decimālskaitlis (peldošais komats)
string"Sveiki", 'Jānis'Teksts (virkne)
booltrue, falsePatiess vai aplams
array[1, 2, 3]Masīvs (datu kolekkcija)
nullnullNav vērtības
objectnew Klase()Objekts (no klases)

Virknes var definēt ar vienpēdiņām vai dubultpēdiņām. Dubultpēdiņās mainīgie tiek interpolēti.

Teksts
<?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.

Teksts
<?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.

Teksts
<?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ļūda

Iesā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.

Teksts
<?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.

Teksts
<?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 )
?>