- İndeksli, assosiativ və çoxölçülü massivlər yaratmaq və onların elementlərinə müraciət etmək
foreachilə massivləri gəzmək vəcount,implode,array_columnkimi funksiyalardan istifadə etmək- Massivləri sıralamaq, parçalamaq (destructuring) və
...ilə birləşdirmək
Sinifdə 25 şagird var və hər birinin qiymətlərini saxlamaq lazımdır. 25 ayrı dəyişən yaratmaq? Əlbəttə, yox. Belə hallarda massiv işə yarayır — bir adın altında çoxlu qiymət saxlayan struktur. PHP-də massiv həm siyahı, həm də lüğət rolunu oynayır, ona görə də massivə demək olar ki, hər skriptdə rast gəlinir.
İndeksli massivlər
Massiv kvadrat mötərizələrlə yaradılır: ["Baku", "Ganja"]. Elementlər 0-dan başlayan indekslərlə nömrələnir. $cities[] = ... yazılışı massivin sonuna yeni element əlavə edir, count elementlərin sayını, print_r isə massivin bütün məzmununu göstərir.
<?php
$cities = ["Baku", "Ganja", "Sumgait"];
$cities[] = "Shaki";
echo $cities[0], "\n";
echo count($cities), "\n";
echo $cities[count($cities) - 1], "\n";
print_r($cities);
echo implode(", ", $cities), "\n";Baku
4
Shaki
Array
(
[0] => Baku
[1] => Ganja
[2] => Sumgait
[3] => Shaki
)
Baku, Ganja, Sumgait, Shakiimplode massivin elementlərini göstərilən ayırıcı ilə bir sətirdə birləşdirir, explode isə əksini edir: sətri ayırıcıya görə massivə bölür. Mövcud olmayan indeksə müraciət etsən, PHP 8 Undefined array key xəbərdarlığı verəcək və null qaytaracaq.
Assosiativ massivlər və foreach
Assosiativ massivdə nömrələr əvəzinə mənalı açarlar işlədilir: "name" => "Leyla". Bu, bir obyekt haqqında məlumatı saxlamaq üçün əlverişlidir. **foreach** dövrü massivin hər elementindən keçir: foreach ($arr as $value) yalnız qiymətləri, foreach ($arr as $key => $value) isə açarları da verir. Açarın mövcudluğunu isset və ya array_key_exists ilə yoxlayırlar.
<?php
$student = [
"name" => "Leyla",
"age" => 14,
"city" => "Baku",
];
$student["grade"] = 8;
echo "{$student['name']} is {$student['age']} years old\n";
var_dump(isset($student["email"]));
var_dump(array_key_exists("city", $student));
foreach ($student as $key => $value) {
echo "$key: $value\n";
}Leyla is 14 years old bool(false) bool(true) name: Leyla age: 14 city: Baku grade: 8
Çoxölçülü massivlər
Massivin elementi başqa massiv də ola bilər. Verilənlər bazasından gələn nəticələr adətən məhz belə görünür: sətirlərin siyahısı, hər sətir isə assosiativ massivdir. array_column bütün sətirlərdən bir sütunu götürür.
<?php
$students = [
["name" => "Aysel", "marks" => [5, 4, 5]],
["name" => "Murad", "marks" => [4, 4, 3]],
["name" => "Elvin", "marks" => [5, 5, 5]],
];
foreach ($students as $student) {
$avg = array_sum($student["marks"]) / count($student["marks"]);
echo $student["name"] . ": " . round($avg, 1) . "\n";
}
echo $students[1]["marks"][2], "\n";
echo implode(", ", array_column($students, "name")), "\n";Aysel: 4.7 Murad: 3.7 Elvin: 5 3 Aysel, Murad, Elvin
Sıralama və faydalı funksiyalar
<?php
$prices = ["bread" => 0.8, "milk" => 1.9, "cheese" => 7.5, "tea" => 4.2];
echo count($prices), "\n";
echo array_sum($prices), "\n";
echo max($prices), "\n";
var_dump(in_array(1.9, $prices));
echo implode(", ", array_keys($prices)), "\n";
asort($prices);
echo implode(", ", array_keys($prices)), "\n";
arsort($prices);
echo array_key_first($prices), "\n";
$colors = explode(",", "red,green,blue");
sort($colors);
print_r($colors);4
14.4
7.5
bool(true)
bread, milk, cheese, tea
bread, milk, tea, cheese
cheese
Array
(
[0] => blue
[1] => green
[2] => red
)| Funksiya | Nəyə görə sıralayır | Açarlar |
|---|---|---|
sort / rsort | qiymət, artan / azalan | yenidən nömrələnir |
asort / arsort | qiymət, artan / azalan | saxlanılır |
ksort / krsort | açar, artan / azalan | saxlanılır |
usort | sənin müqayisə funksiyan (növbəti dərs) | yenidən nömrələnir |
Parçalama və birləşdirmə
Massivin elementlərini bir sətirdə ayrı dəyişənlərə yazmaq olar: [$a, $b] = $pair; — buna parçalama (destructuring) deyilir. Assosiativ massivdə açarları göstərirsən. Yayma operatoru ... isə bir massivin elementlərini başqa massivin içinə «tökür».
<?php
[$first, $second] = ["gold", "silver"];
echo "$first, $second\n";
$a = 1;
$b = 2;
[$a, $b] = [$b, $a];
echo "a=$a b=$b\n";
["name" => $name, "city" => $city] = ["name" => "Nigar", "city" => "Shaki"];
echo "$name lives in $city\n";
$morning = ["tea", "bread"];
$evening = ["soup", "salad"];
$menu = [...$morning, ...$evening, "cake"];
echo implode(" + ", $menu), "\n";gold, silver a=2 b=1 Nigar lives in Shaki tea + bread + soup + salad + cake
$user = array('name' => 'Aysel', 'age' => 15);
list($x, $y) = $point;
$all = array_merge($boys, $girls);$user = ['name' => 'Aysel', 'age' => 15];
[$x, $y] = $point;
$all = [...$boys, ...$girls];array() və list() hələ də işləyir, amma yeni kodda qısa [] yazılışı standartdır.Əsas fikirlər
- İndeksli massivin elementləri 0-dan nömrələnir;
$arr[] = $xsona element əlavə edir,countsayını verir. - Assosiativ massiv
açar => qiymətcütlərini saxlayır;foreach ($arr as $key => $value)hər ikisini verir. - Çoxölçülü massivlər cədvəl kimidir;
array_columnbir sütunu çıxarır. sortaçarları silir,asortvəksortsaxlayır; sıralama funksiyaları massivi yerindəcə dəyişir.[$a, $b] = $arrmassivi parçalayır,[...$a, ...$b]isə massivləri birləşdirir.
Özünü yoxla
10 sual. Hər düzgün cavab XP qazandırır.
$a = [10, 20, 30]; echo $a[1]; nə çap edir?