📋 Masīvi PHP
Masīvi ļauj saglabāt vairākas vērtības vienā mainīgajā. PHP piedāvā bagātīgu masīvu funkciju bibliotēku.
Masīvu veidi
PHP ir trīs masīvu veidi: indeksēti, asociatīvi un daudzlīmeņu.
Teksts
<?php
// 1. Indeksēts masīvs (ar skaitliskiem indeksiem)
$augļi = ["ābols", "bumbieris", "ķirsis"];
// vai:
$augļi = array("ābols", "bumbieris", "ķirsis");
echo $augļi[0] . "<br>"; // ābols (0 no sākuma)
echo $augļi[2] . "<br>"; // ķirsis
// 2. Asociatīvs masīvs (ar virknes atslēgām)
$persona = [
"vārds" => "Anna",
"vecums" => 30,
"pilsēta" => "Rīga"
];
echo $persona["vārds"] . "<br>"; // Anna
echo $persona["vecums"] . "<br"; // 30
// 3. Daudzlīmeņu masīvs
$studenti = [
[
"vārds" => "Jānis",
"kurss" => 2,
"atzīmes"=> [85, 90, 78]
],
[
"vārds" => "Marta",
"kurss" => 3,
"atzīmes"=> [92, 88, 95]
]
];
echo $studenti[0]["vārds"] . "<br>"; // Jānis
echo $studenti[1]["atzīmes"][0] . "<br>"; // 92
?>
Masīvu pārvaldīšana
Teksts
<?php
$saraksts = ["a", "b", "c"];
// Pievienot beigās
$saraksts[] = "d"; // Vienkāršākais veids
array_push($saraksts, "e", "f"); // Vairāki elementi
// Pievienot sākumā
array_unshift($saraksts, "z");
// Dzēst no beigām
$pēdējais = array_pop($saraksts); // Noņem un atgriež "f"
// Dzēst no sākuma
$pirmais = array_shift($saraksts); // Noņem un atgriež "z"
print_r($saraksts); // [a, b, c, d, e]
// Dzēst pēc indeksa
unset($saraksts[1]); // Dzēš "b", bet indeksi netiek pārnumurēti!
print_r($saraksts); // [0=>a, 2=>c, 3=>d, 4=>e]
// Pārnumurēt indeksus
$saraksts = array_values($saraksts);
print_r($saraksts); // [0=>a, 1=>c, 2=>d, 3=>e]
// Masīva garums
echo count($saraksts) . "<br>"; // 4
// Vai elements eksistē?
echo in_array("c", $saraksts) ? "Ir<br>" : "Nav<br>"; // Ir
echo isset($saraksts[5]) ? "Eksistē<br>" : "Nav<br>"; // Nav
echo array_key_exists("vārds", ["vārds" => "Anna"]) ? "Ir<br>" : "Nav<br>"; // Ir
?>
Noderīgas masīvu funkcijas
Teksts
<?php
$skaitļi = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3];
// Šķirošana
sort($skaitļi); // Pieaugošā secībā (pārkārto oriģinālu)
print_r($skaitļi); // [1, 1, 2, 3, 3, 4, 5, 5, 6, 9]
rsort($skaitļi); // Dilstošā secībā
print_r($skaitļi); // [9, 6, 5, 5, 4, 3, 3, 2, 1, 1]
$personas = [
["vārds" => "Pēteris", "vecums" => 25],
["vārds" => "Anna", "vecums" => 30],
["vārds" => "Jānis", "vecums" => 22],
];
// usort - šķirošana ar pielāgotu salīdzinātāju
usort($personas, function($a, $b) {
return $a["vecums"] <=> $b["vecums"]; // Pēc vecuma
});
foreach ($personas as $p) {
echo "{$p["vārds"]}: {$p["vecums"]}<br>"; // Jānis: 22, Pēteris: 25, Anna: 30
}
// asort/arsort - šķiro saglabājot asociācijas
$cenas = ["ābols" => 1.5, "bumbieris" => 2.3, "plūme" => 0.8];
asort($cenas);
print_r($cenas); // plūme=>0.8, ābols=>1.5, bumbieris=>2.3
// ksort - šķiro pēc atslēgas
ksort($cenas);
print_r($cenas); // ābols=>1.5, bumbieris=>2.3, plūme=>0.8
?>
<?php
// Masīvu apvienošana
$a = ["ābols", "bumbieris"];
$b = ["ķirsis", "plūme"];
$kopā = array_merge($a, $b);
print_r($kopā); // ābols, bumbieris, ķirsis, plūme
// Spread operators (PHP 7.4+)
$kopā2 = [...$a, ...$b];
// Unikālie elementi
$ar_dublikātiem = [1, 2, 2, 3, 3, 3, 4];
$unikālie = array_unique($ar_dublikātiem);
print_r($unikālie); // [1, 2, 3, 4]
// Apgriest secību
$apgriezts = array_reverse([1, 2, 3, 4, 5]);
print_r($apgriezts); // [5, 4, 3, 2, 1]
// Izgriezt daļu (slice)
$daļa = array_slice([10, 20, 30, 40, 50], 1, 3);
print_r($daļa); // [20, 30, 40]
// Summa un reizinājums
$skaitļi = [1, 2, 3, 4, 5];
echo array_sum($skaitļi) . "<br>"; // 15
echo array_product($skaitļi) . "<br>"; // 120
// Meklēšana - atgriež atslēgu
$atslēga = array_search("ķirsis", ["ābols", "bumbieris", "ķirsis"]);
echo $atslēga . "<br>"; // 2
// Masīva apvēršana (atslēgas <-> vērtības)
$apvērsts = array_flip(["a" => 1, "b" => 2, "c" => 3]);
print_r($apvērsts); // [1 => "a", 2 => "b", 3 => "c"]
?>
Filtrēšana un transformācija
🎓 Ko mācīties tālāk?
Nākamajā sadaļā iepazīstieties ar PHP funkcijām – kā strukturēt kodu atkārtoti izmantojamos blokos.
Teksts
<?php
$skaitļi = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// array_filter - filtrē pēc nosacījuma
$pāra = array_filter($skaitļi, function($n) {
return $n % 2 === 0; // Patur tikai pāra skaitļus
});
print_r($pāra); // [2, 4, 6, 8, 10]
// array_map - transformē katru elementu
$kvadrāti = array_map(fn($n) => $n ** 2, $skaitļi);
print_r($kvadrāti); // [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
// array_reduce - reducēt masīvu uz vienu vērtību
$summa = array_reduce($skaitļi, function($nesējs, $elements) {
return $nesējs + $elements;
}, 0); // 0 = sākotnējā vērtība
echo $summa . "<br>"; // 55
// Praktisks piemērs - produktu apstrāde
$produkti = [
["nosaukums" => "Ābols", "cena" => 0.50, "aktīvs" => true],
["nosaukums" => "Bumbieris","cena" => 1.20, "aktīvs" => false],
["nosaukums" => "Ķirsis", "cena" => 2.50, "aktīvs" => true],
];
// Filtrē tikai aktīvos
$aktīvie = array_filter($produkti, fn($p) => $p["aktīvs"]);
// Iegūst tikai nosaukumus
$nosaukumi = array_map(fn($p) => $p["nosaukums"], $aktīvie);
echo implode(", ", $nosaukumi) . "<br>"; // Ābols, Ķirsis
// array_column - iegūst vienu kolonnu no daudzlīmeņu masīva
$cenas = array_column($produkti, "cena");
print_r($cenas); // [0.50, 1.20, 2.50]
// Ar indeksēšanu pēc kolonnas
$pēcNosaukuma = array_column($produkti, null, "nosaukums");
echo $pēcNosaukuma["Ābols"]["cena"] . "<br>"; // 0.50
?>