PHP
Massivlərlə işləyən funksiyalar
- Dəyişən, yoxsa massiv?
- Massivdə indeksin mövcudluğunun yoxlanılması
- Massivdə elementin mövcudluğunun yoxlanılması
- Massivdə axtarılan elementin indeksini əldə etmək
- Massivdəki qiymətlərin dəyişənlərə köçürülməsi
- Massivin bütün elementlərindən sətir formalaşdırılması
Biz artıq massivlərlə işləməyin əsaslarını öyrənmişik. Bu dərsdə massivlərlə işləyən funksiyaların işi ilə tanış olacağıq.
Dəyişən, yoxsa massiv?
is_array()
funksiyası ilə dəyişənin qiymətinin massiv olub-olmadığını yoxlaya bilərik. Məsələn:
<?php
$numbers = [1, 3, 5, 7];
$name = 'Emil';
echo is_array($numbers) ? 'Massivdir' : 'Massiv deyil';
echo '<br>';
echo is_array($name) ? 'Massivdir' : 'Massiv deyil';
Nəticə:
Massivdir
Massiv deyil
Massivdə indeksin mövcudluğunun yoxlanılması
Verilmiş massivdə indeksin mövcudluğunu yoxlamaq üçün foreach()
konstruksiyası ilə massivin bütün elementlərinə müraciət edə bilərik. İlk ağla gələn budur. Lakin daha effektiv üsul mövcuddur. Bu məqsədlə PHP-yə öncədən quraşdırılmış array_key_exists()
funksiyasından istifadə edə bilərik. Sözügedən funksiya birinci arqument kimi indeks, ikinci arqument kimi isə massiv qəbul edir. Əgər indeks massivdə mövcuddursa, true, əks halda false geri qayıdır. Məsələn:
<?php
$user = [
'id' => 1,
'name' => 'Emil',
'email' => 'admin@codecourse.info',
'gender' => 'M',
'age' => 35
];
if (array_key_exists('email', $user)) {
echo $user['email'];
} else {
echo '$user massivində email indeksi yoxdur.';
}
Nəticə:
admin@codecourse.info
PHP-yə öncədən quraşdırılmış funksiyaların analoqunun yazılması yaxşı təcrübə sayılır. Ancaq yadda saxlayın ki, standart funksiyalar sürətli işləyir, çünki C proqramlaşdırma dilində yazılıb. Gəlin özümüz array_key_exists
funksiyasının analoqunu yazaq:
<?php
function isKeyExistInArray(string|int $index, array $array): bool
{
$result = false;
foreach ($array as $key => $value) {
if ($index === $key) {
$result = true;
break;
}
}
return $result;
}
İndi isə özümüz yazdığımız funksiyanın işini yoxlayaq:
<?php
function isKeyExistInArray(string|int $index, array $array): bool
{
$result = false;
foreach ($array as $key => $value) {
if ($index === $key) {
$result = true;
break;
}
}
return $result;
}
$user = [
'id' => 1,
'name' => 'Emil',
'email' => 'admin@codecourse.info',
'gender' => 'M',
'age' => 35
];
if (isKeyExistInArray('email', $user)) {
echo $user['email'];
} else {
echo '$user massivində email indeksi yoxdur.';
}
Nəticə:
admin@codecourse.info
Yuxarıdakı nümunədə ilk öncə isKeyExistInArray()
funksiyası, sonra $user
massivi gəlir. Artıq bildiyimiz kimi, if
operatoru dairəvi mötərizə cütlüyü daxilində yazılmış şərti (ifadəni) yoxlayır və nəticəni məntiqi tipə çevirir. Nümunədə dairəvi mötərizə cütlüyü daxilində isKeyExistInArray()
funksiyası çağrılır və ona 2 qiymət (email sətri (string tipi) və $user
massivi) ötürülür. Funksiya 2 arqument ($index
, $array
) qəbul edir. Funksiyanın daxilində $result
dəyişəninə false məntiqi tipi mənimsədirik. foreach
dövr operatoru $array
massivinin ($array
massivi funksiyaya ötürülən massivdir, yəni indiki halda $user
massivi) bütün elementlərinə növbə ilə müraciət edir və hər bir iterasiyada $key
dəyişənin qiyməti ilə $index
dəyişənin qiyməti (nümunədə 'email') müqayisə edilir. Uyğunluq tapıldıqda $result
dəyişəninə true məntiqi tipi mənimsədirik və break
operatoru ilə dövrün işini dayandırırıq ki, foreach
dövr operatoru digər elementlərə müraciət etməsin. Bu, optimallaşdırmadır, bu halda skript daha sürətli işləyir. Uyğunluq tapılmadıqda funksiya $result
dəyişəninin başlanğıc qiymətini, yəni false
geri qaytarır. Bundan sonra, funksiyanın nəticəsi onun çağrıldığı yerə geri qayıdır. Əgər funksiyanın nəticəsi true, yəni doğrudursa, ekranda indeksi 'email' olan elementin qiyməti çap edilir. Əks halda, else
konstruksiyası daxilində yazılmış kod ekranda çap edilir.
Massivdə elementin mövcudluğunun yoxlanılması
Massivdə elementin mövcudluğunu yoxlamaq üçün in_array()
funksiyasından istifadə edə bilərik. Sözügedən funksiya birinci arqument kimi axtarılan element, ikinci arqument kimi isə massiv qəbul edir. Əgər axtarılan element massivdə mövcuddursa, true, əks halda false geri qayıdır. Məsələn:
<?php
$numbers = [5, 9, '15', 7, 9, -3];
if (in_array(15, $numbers)) {
echo 'Massivdə 15 elementi var';
}
Nəticə:
Massivdə 15 elementi var
Əgər in_array()
funksiyasında 3-cü parametr - true təyin edilibsə, elementin massivdə axtarılması zamanı identiklik (həm qiymət, həm də tip yoxlanılır) də nəzərə alınır. Məsələn:
<?php
$numbers = [5, 9, '15', 7, 9, -3];
if (in_array(15, $numbers, true)) {
echo 'Massivdə 15 elementi var';
}
Yuxarıdakı koddan göründüyü kimi in_array()
funksiyasında 3-cü parametr - true təyin edilib. Bildiyimiz kimi, '15' (string tipi) və 15 (int tipi) fərqlidir, ona görə axtarılan element massivdə yoxdur və brauzerdə heç nə görsənməyəcək.
Massivdə axtarılan elementin indeksini əldə etmək
array_search()
funkiyası in_array()
funkiyasına oxşardır, lakin o, true əvəzinə axtarılan elementin indeksini geri qaytarır. Məsələn:
<?php
$numbers = [5, 9, '15', 7, 9, -3];
$key = array_search('15', $numbers, true);
echo $key;
Nəticə:
2
Əgər array_search()
funksiyasında 3-cü parametr - true təyin edilibsə, elementin massivdə axtarılması zamanı identiklik nəzərə alınır.
Massivdəki qiymətlərin dəyişənlərə köçürülməsi
Massivdəki qiymətlərin dəyişənlərə köçürülməsi üçün list()
konstruksiyasından istifadə edirik. Məsələn:
<?php
$person = ['Emil', 35, 'admin@codecourse.info', 'Sumgait'];
list($name, $age, $email, $city) = $person;
echo $name . '<br>';
echo $age . '<br>';
echo $email . '<br>';
echo $city;
Nəticə:
Emil
35
admin@codecourse.info
Sumgait
Aşağıdakı kodda massivin yalnız 0-cı və 2-ci elementləri dəyişənlərə köçürülür. Bu məqsədlə list()
konstruksiyasında massivdəki istifadə edilməyən elementlərin əvəzinə vergül işarəsi qoyulur:
<?php
$person = ['Emil', 35, 'admin@codecourse.info', 'Sumgait'];
list($name, , $email, ) = $person;
echo $name . '<br>';
echo $email . '<br>';
Nəticə:
Emil
admin@codecourse.info
list()
konstruksiyası, həmçinin assosiativ massivlərlə işləyir. Məsələn:
<?php
$person = [
'name' => 'Emil',
'age' => 35,
'email' => 'admin@codecourse.info',
'city' => 'Sumgait'
];
list(
'name' => $name,
'age' => $age,
'email' => $email,
'city' => $city
) = $person;
echo $name . '<br>';
echo $age . '<br>';
echo $email . '<br>';
echo $city;
Nəticə:
Emil
35
admin@codecourse.info
Sumgait
Massivin bütün elementlərindən sətir formalaşdırılması
implode()
funksiyası massivin bütün elementlərindən sətir formalaşdırır. Sözügedən funksiya birinci arqument kimi ayırıcı, ikinci arqument kimi massiv qəbul edir. Məsələn:
<?php
$person = ['Emil', 35, 'admin@codecourse.info'];
echo implode(',', $person);
Nəticə:
Emil, 35, admin@codecourse.info
Yuxarıdakı nümunədə implode()
funkiyasında ayırıcı kimi vergül işarəsindən istifadə edilib. Ona görə formalaşdırılmış sətirdə massivin hər bir elementi arasında vergül işarəsi qoyulub.
Gəlin ayırıcı kimi "-" işarəsindən istifadə edək və nəticəyə baxaq:
<?php
$person = ['Emil', 35, 'admin@codecourse.info'];
echo implode('-', $person);
Nəticə:
Emil-35-admin@codecourse.info
Şərh yazmaq üçün hesabınıza daxil olun.