PHP
Massivlər
- Massivin yaradılması
- Massivin elementinə müraciət
- Massivdə yeni elementin yaradılması
- İndeksi özümüz təyin edirik
- Massivin elementini silirik
- Massivdə elementlərin sayı
- Assosiativ massivlər
- foreach
php-beginner qovluğunda arrays.php faylı yaradırıq. Bu dərsdəki bütün nümunələri həmin fayla əlavə edib yoxlaya bilərsiniz.
Adi dəyişənlərdən fərqli olaraq massivlər çoxlu elementlərin saxlanılması üçün nəzərdə tutulmuş xüsusi dəyişənlərdir.
Massivin yaradılması
Boş massivin yaradılması sintaksisi aşağıdakı kimidir:
$programmingLanguages = [];
Massivin elementləri kvadrat mötərizələrin içərisində yazılır:
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript'];
echo
əmrinin köməyilə massivin tərkibini ekranda göstərmək istədikdə:
<?php
error_reporting(-1);
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript'];
echo $programmingLanguages;
Nəticə:
Göründüyü kimi echo
əmri $programmingLanguages
massivinin tərkibini ekranda göstərmir. Warning tipli xəbərdarlıq göstərilir və massiv 'Array' sətrinə çevrilir. Həmçinin print
əmri massivin tərkibini ekranda göstərmir.
Massivin tərkibini ekranda göstərmək üçün var_dump()
funksiyasından istifadə edə bilərik:
<?php
error_reporting(-1);
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript'];
var_dump($programmingLanguages);
Nəticə:
Həmçinin print_r()
funksiyasının köməyilə massivin tərkibinə baxa bilərik.
$programmingLanguages
massivinin bütün elementləri sətir (string
) tipinə aiddir. Ancaq unutmayın ki, massivə istənilən tip elementlər əlavə etmək mümkündür:
<?php
$myArray = [1, 0.5, 'Emil', null];
var_dump($array);
Nəticə:
D:\OpenServer\domains\php-beginner\arrays.php:6:
array (size=4)
0 => int 1
1 => float 0.5
2 => string 'Emil' (length=4)
3 => null
İndi massivin elementləri müxtəlif tiplərə aiddirlər: int
, float
, string
və null
.
Massivin elementinə müraciət
Massivin elementinə müraciət etmək üçün echo array[key]
sintaksisindən istifadə edilir. Massivin elementinin qiymətini ekranda göstərmək üçün əvvəlcə massivin adını, sonra kvadrat mötərizənin içərisində onun indeksini yazmaq lazımdır:
<?php
error_reporting(-1);
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript'];
echo $programmingLanguages[0];
Nəticə:
HTML
Massivdə sıralama başlanğıc ayar olaraq 0-dan başlanır, yəni massivin 1-ci elementi 0-cı indeksdə yerləşir.
İndi massivdə indeksi 2 olan elementin qiymətini ekranda göstərək:
<?php
error_reporting(-1);
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript'];
echo $programmingLanguages[2];
Nəticə:
PHP
Massivdə mövcud olmayan indeksə müraciət - bu, təyin edilməmiş dəyişənə müraciət kimi qəbul edir, E_NOTICE səviyyəli səhv qeydə alınır və nəticə null
-a bərabər olur:
<?php
error_reporting(-1);
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript'];
echo $programmingLanguages[5];
Nəticə:
Warning: Undefined array key 5 in D:\OpenServer\domains\php-beginner\arrays.php on line 6
$programmingLanguages
massivində indeksi 5 olan element yoxdur.
Massivdə yeni elementin yaradılması
$programmingLanguages
massivinə yeni element əlavə edək. Həmin elementin indeksi massivdə ən böyük indeksin üzərinə 1 əlavə etməklə (ən böyük indeks + 1
) hesablanır:
$programmingLanguages[] = 'Java';
İndi var_dump()
funksiyasının köməyilə $programmingLanguages
massivinin tərkibini ekranda göstərək:
<?php
error_reporting(-1);
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript'];
$programmingLanguages[] = 'Java';
var_dump($programmingLanguages);
Nəticə:
D:\OpenServer\domains\php-beginner\arrays.php:8:
array (size=5)
0 => string 'HTML' (length=4)
1 => string 'CSS' (length=3)
2 => string 'PHP' (length=3)
3 => string 'JavaScript' (length=10)
4 => string 'Java' (length=4)
$programmingLanguages
massivində indeksi 4 olan yeni element - 'Java' yaradıldı. Ən böyük indeksin (3) üzərinə 1 əlavə edildi.
İndeksi özümüz təyin edirik
Hazırda $programmingLanguages
massivində 5 element var və onların indeksi avtomatik təyin edilib. Buna görə massivin 1-ci elementi 0-cı indeksdə, 2-ci elementi 1-ci indeksdə yerləşir və bu ardıcıllıqla davam edir:
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript', 'Java'];
Lakin massiv yaradarkən, yaxud massivə yeni element əlavə edərkən onun indeksini özümüz təyin edə bilərik. İndi $programmingLanguages
massivinə indeksi 9 olan 'Go' elementi əlavə edək:
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript', 'Java', 9 => 'Go'];
Həmçinin aşağıdakı yazılış sintaksisindən istifadə edə bilərik:
$programmingLanguages[9] = 'Go';
Sizə hansı variant daha rahat gəlirsə, onu istifadə edin.
var_dump()
funksiyasının köməyilə $programmingLanguages
massivinin tərkibinə baxaq:
<?php
error_reporting(-1);
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript', 'Java', 9 => 'Go'];
var_dump($programmingLanguages);
Nəticə:
D:\OpenServer\domains\php-beginner\arrays.php:6:
array (size=6)
0 => string 'HTML' (length=4)
1 => string 'CSS' (length=3)
2 => string 'PHP' (length=3)
3 => string 'JavaScript' (length=10)
4 => string 'Java' (length=4)
9 => string 'Go' (length=2)
Göründüyü kimi massivə indeksi 9 olan 'Go' elementi əlavə edildi.
Əgər indi $programmingLanguages
massivinə element əlavə etsək, onun indeksi massivdəki ən böyük ədədi indeksdən 1 vahid çox olacaq:
<?php
error_reporting(-1);
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript', 'Java', 9 => 'Go'];
$programmingLanguages[] = 'Haskell';
var_dump($programmingLanguages);
Nəticə:
D:\OpenServer\domains\php-beginner\arrays.php:7:
array (size=7)
0 => string 'HTML' (length=4)
1 => string 'CSS' (length=3)
2 => string 'PHP' (length=3)
3 => string 'JavaScript' (length=10)
4 => string 'Java' (length=4)
9 => string 'Go' (length=2)
10 => string 'Haskell' (length=7)
Yeni elementin indeksi massivdə artıq mövcuddursa, onda yeni elementin qiyməti əvvəlki elementin yerinə yazılır:
<?php
error_reporting(-1);
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript', 'Java', 9 => 'Go', 10 => 'Haskell'];
var_dump($programmingLanguages);
$programmingLanguages[10] = 'Rust';
var_dump($programmingLanguages);
Nəticə:
D:\OpenServer\domains\php-beginner\arrays.php:6:
array (size=7)
0 => string 'HTML' (length=4)
1 => string 'CSS' (length=3)
2 => string 'PHP' (length=3)
3 => string 'JavaScript' (length=10)
4 => string 'Java' (length=4)
9 => string 'Go' (length=2)
10 => string 'Haskell' (length=7)
D:\OpenServer\domains\php-beginner\arrays.php:9:
array (size=7)
0 => string 'HTML' (length=4)
1 => string 'CSS' (length=3)
2 => string 'PHP' (length=3)
3 => string 'JavaScript' (length=10)
4 => string 'Java' (length=4)
9 => string 'Go' (length=2)
10 => string 'Rust' (length=4)
Massivin elementini silirik
Massivdə elementi silmək üçün unset()
konstruksiyasından istifadə edilir. $programmingLanguages
massivindən indeksi 3 olan elementi silirik:
<?php
error_reporting(-1);
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'JavaScript', 'Java', 9 => 'Go', 10 => 'Rust'];
unset($programmingLanguages[3]);
var_dump($programmingLanguages);
Nəticə:
D:\OpenServer\domains\php-beginner\arrays.php:8:
array (size=6)
0 => string 'HTML' (length=4)
1 => string 'CSS' (length=3)
2 => string 'PHP' (length=3)
4 => string 'Java' (length=4)
9 => string 'Go' (length=2)
10 => string 'Rust' (length=4)
Massivdə elementlərin sayı
count()
funksiyasının köməyilə massivdəki elementlərin sayını tapa bilərik:
<?php
error_reporting(-1);
$programmingLanguages = ['HTML', 'CSS', 'PHP', 'Java', 9 => 'Go', 10 => 'Rust'];
$count = count($programmingLanguages);
echo sprintf('Massivdə %d element var', $count);
Nəticə:
Massivdə 6 element var
Assosiativ massivlər
Massivin indeksi sətir tipi olduqda o, assosiativ massiv adlanır.
Məsələn, saytda qeydiyyatdan keçən istifadəçilərin məlumatları verilənlər bazasında saxlanılır. Proqramçı istifadəçi profili yaratmaq üçün həmin məlumatları verilənlər bazasından assosiativ massiv kimi əldə edir, onlar üzərində müvafiq əməliyyatlar aparır. Əlbəttə istifadəçilərin məlumatlarını verilənlər bazasından indeksli massiv kimi əldə etmək mümkündür, lakin bu halda $user
massivindəki 2-ci indeksin name sütununu, 3-cü indeksin email sütununu, 4-cü indeksin gender sütununu ifadə etməsini yaddaşda saxlamaq lazımdır. Bu isə çətindir, həm də müəyyən vaxtdan sonra layihə ilə digər proqramçı məşğul ola bilər. Əlbəttə ki o, belə olan halda əvvəlki proqramçı haqda yaxşı düşünməyəcək. Bundan başqa, gələcəkdə verilənlər bazasında istifadəçilər üçün yeni sütunlar əlavə edilə bilər. Bu halda koddakı indeksləri dəyişdirmək lazımdır. Bu baxımından assosiativ massivlər rahatdır.
$user
indeksli massivi yaradırıq:
<?php
$user = ['Emil', 'admin@vebkurs.info', 'M', 'Sumgait', '2021-12-28'];
İstifadəçinin adını ekranda göstərmək üçün massivin 1-ci elementinə (0-cı indeksə) müraciət edirik:
<?php
error_reporting(-1);
$user = ['Emil', 'admin@vebkurs.info', 'M', 'Sumgait', '2021-12-28'];
echo $user[0];
Nəticə:
Emil
İstifadəçinin yaşadığı şəhərin adını ekranda göstərmək üçün massivin 4-cü elementinə (3-cü indeksə) müraciət edirik:
<?php
error_reporting(-1);
$user = ['Emil', 'admin@codecourse.info', 'M', 'Sumgait', '2021-12-28'];
echo $user[3];
Nəticə:
Sumgait
İndi isə $user
assosiativ massivini yaradaq:
<?php
$user = [
'name' => 'Emil',
'email' => 'admin@vebkurs.info',
'gender' => 'M',
'city' => 'Sumgait',
'created_at' => '2021-12-28'
];
İstifadəçinin e-poçtunu ekranda göstərmək üçün email
indeksinə müraciət edirik:
<?php
$user = [
'name' => 'Emil',
'email' => 'admin@vebkurs.info',
'gender' => 'M',
'city' => 'Sumgait',
'created_at' => '2021-12-28'
];
echo $user['email'];
Nəticə:
admin@vebkurs.info
Göründüyü kimi assosiativ massivlə işləmək rahatdır.
.php genişlənməsi olan faylda həm PHP kod, həm də HTML teqlərdən istifadə edə bilərik. Artıq bilirik ki, PHP interpretatoru <?php ... ?>
teqləri içərisində yazılmış əmrləri icra edir. user.php faylına aşağıdakı koda əlavə edirik:
<?php
error_reporting(-1);
$user = [
'name' => 'Emil',
'email' => 'admin@vebkurs.info',
'gender' => 'M',
'city' => 'Sumgait',
'created_at' => '2021-12-28'
];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= $user['name'] ?></title>
</head>
<body>
<h1><?= $user['name']; ?></h1>
<p>İstifadəçinin məlumatları</p>
<ul>
<li><strong>E-poçt:</strong> <?= $user['email']; ?></li>
<li><strong>Cins:</strong> <?= $user['gender']; ?></li>
<li><strong>Şəhər:</strong> <?= $user['city']; ?></li>
<li><strong>Yaradılma tarixi:</strong> <?= $user['created_at']; ?></li>
</ul>
</body>
</html>
Nəticə:
Yuxarıda yazıldığı kimi PHP interpretatoru <?php ... ?>
teqləri içərisində yazılmış əmrləri PHP kodu kimi icra edir.
Skriptdə istifadə edilən <?=
echo-teqi <?php echo
teqinin qısa yazılışıdır.
foreach
Massivdə, məsələn, 10 min element ola bilər və bu elementlər üzərində müəyyən əməliyyatlar aparmaq lazım gələ bilər. Bu işi asanlaşdırmaq üçün massiv və obyektlər üçün nəzərdə tutulmuş foreach
dövr operatoru massivin bütün elementlərinə növbə ilə müraciət edə və onlar üzərində müxtəlif əməliyyatlar apara bilər. Yazılış sintaksisi aşağıdakı kimidir:
foreach ($array as $key => $value) {
...
}
$array
- bu, massivdir, $key
və $value
isə massivin cari iterasiyadakı indeks və qiymətidir. Fiqurlu mötərizə daxilində olan kod massivin hər bir elementi üçün tətbiq edilir. Bu deyilənləri daha yaxşı başa düşmək üçün gəlin aşağıdakı nümunəyə baxaq:
<?php
$user = [
'name' => 'Emil',
'email' => 'admin@codecourse.info',
'gender' => 'M',
'city' => 'Tallin',
'created_at' => '2021-12-28'
];
foreach ($user as $key => $value) {
echo $key . ': ' . $value;
echo '<br>';
}
Nəticə:
name: Emil
email: admin@codecourse.info
gender: M
city: Tallin
created_at: 2021-12-28
Yuxarıdakı nümundən göründüyü kimi foreach
dövr operatoru $user
massivinin bütün elementlərinə növbə ilə müraciət edir. Birinci iterasiyada $key
və $value
dəyişənlərinin qiymətləri name və Emil, ikincidə email və admin@codecourse.info və bu ardıcıllıqla davam edir. $key
və $value
dəyişənləri başqa cür də adlandırıla bilər. 5 iterasiya (massivin elementlərinin sayı qədər) icra olunur.
Massivin indeksi lazım deyilsə, onda foreach
dövr operatorunun yazılış sintaksisi aşağıdakı kimi olacaq:
<?php
foreach ($array as $value) {
...
}
Məsələn:
<?php
$users = ['Emil', 'Zaur', 'Elməddin', 'Sabit', 'Rasim'];
foreach ($users as $user) {
echo $user;
echo '<br>';
}
Nəticə:
Emil
Zaur
Elməddin
Sabit
Rasim
Gəlin başqa bir nümunəyə baxaq. $numbers
massivi 7 elementdən ibarətdir və bütün elementlər ədəddir:
<?php
$numbers = [5, 9, -5, 8, 15, 23, -13];
Gəlin ədədi ortanı tapaq. Ədədi orta - bir neçə ədədin cəminin onların sayına bölunməsindən alınan ədədə deyilir. Çalışmanın həlli aşağıdakı kimi olacaq:
<?php
$numbers = [5, 9, -5, 8, 15, 23, -13];
$sumOfNumbers = 0;
foreach ($numbers as $number) {
$sumOfNumbers += $number;
}
$countOfNumbers = count($numbers);
$averageNumber = $sumOfNumbers / $countOfNumbers;
echo $averageNumber;
Nəticə:
6
Yuxarıdakı skriptin izahı:
- Əvvəlcə
$sumOfNumbers
dəyişəninə 0 mənimsədirik - Sonra hər iterasiyada
$sumOfNumbers
dəyişəninin üstünə massivdə olan elementləri əlavə edirik - Dövr bitdikdə
$sumOfNumbers
dəyişəninin qiyməti 42 olur count()
funksiyası ilə massivdə olan elementlərin sayını tapırıq- Ədədi ortanı tapmaq üçün
sumOfNumbers
dəyişəninin qiymətini massivdə olan elementlərin sayına bölürük, yəni 42 / 7 = 6 - Nəticəni ekrana çıxarırıq
Şərh yazmaq üçün hesabınıza daxil olun.