PHP
June 7, 2019

Ko'p o'lchamli massivlar

Ko'p o'lchamli massiv deb har bir indeksda boshqa massivni o'zida saqlaydigan massivga aytiladi. Oddiy qilib aytganda, ko'p o'lchamli massiv massiv ichidagi massivdir.


⚠️Umumiy amaliyotlarda bog'langan massivlar ko'p o'lchamli massivlar ichida saqlanadi.


Ko'p o'lchamli massivni yaratish

Bog'langan massivlarni qanday yaratishni avval ko'rganimizdek, ko'p o'lchamli massiv massiv ichidagi massiv hisoblanib u o'zining ichida bog'langan massivlarni saqlaydi.

Ko'p o'lchamli massivlarni yaratish sintaksisi:

<?php

/* 
    ko'p o'lchamli massivni ishga tushirish
*/

$telefonlar = array(
    array(
        "nom"=>"Iphone", 
        "turi"=>"telefon", 
        "brendi"=>"Apple"
    ),
    array(
        "nom"=>"Samsung S10+", 
        "turi"=>"telefon", 
        "brendi"=>"Samsung"
    ),
    array(
        "nom"=>"Redmi 7", 
        "turi"=>"telefon", 
        "brendi"=>"Xiaomi"
    ),
);
?>

Biz bu yerda massiv ichidagi massiv bilan shug'ullanayapmiz. Ma'lumotni olish uchun biz massivga erishishimiz kerak. Keyin, biz ko'p o'lchamli massivda saqlangan ma'lumotni belgilangan massivdan olishimiz mumkin.

Misol uchun, agar biz massivdagi Iphone haqidagi ma'lumotni olmoqchi bo'lsak, ko'p o'lchamli massivimiz ichidagi birinchi massivni 0 indeksdan foydalanib olishimiz mumkin. Keyin massiv ichidagi barcha ma'lumotlarni ekranga chiqarolishimiz mumkin.

Namuna:

<?php

/* 
    Ko'p o'lchamli massivga kirish
*/

echo "Ko'p o'lchamli massivdagi ma'lumotlar...";
echo "Iphone - ".$telefonlar[0]["turi"].". U ".$telefonlar[0]["brendi"]."tomonidan ishlab chiqilgan\n";
echo "Redmi 7 - ".$telefonlar[2]["turi"].". U ".$telefonlar[2]["brendi"]. "tomonidan ishlab chiqilgan\n";

?>

Quyidagi natijani olamiz:

Ko'p o'lchamli massivdagi ma'lumotlar...
Iphone - telefon. U Apple tomonidan ishlab chiqilgan
Redmi 7 - telefon. U Xiaomi tomonidan ishlab chiqilgan

Ko'p o'lchamli massivlarda ham sikllarni ishlatolamiz. Bu sikllar albatta for va foreach sikllardir.


for va foreach siklini ishlatish

Ko'p o'lchamli massivni takrorlash uchun for siklidan foydalanganimizda, biz massivning uzunligi/o'lchamini bilishimiz kerak. Bilish uchun count() funksiyasi ishlatiladi. Quyidagi namunada for siklidan foydalanib, ko'p o'lchamli massivni takrorlash ko'rsatilgan:

<?php
/* 
    ko'p o'lchamli massivni ishga tushirish
*/
$telefonlar = array(
    array(
        "Nom"=>"Iphone",
        "Tur"=>"telefon",
        "Brend"=>"Apple"
    ),
    array(
        "Nom"=>"Samsung S10+",
        "Tur"=>"telefon",
        "Brend"=>"Samsung"
    ),
    array(
        "Nom"=>"Redmi 7",
        "Tur"=>"telefon",
        "Brend"=>"Xiaomi"
    ),
);
$olchami = count($telefonlar);

for($i=0;$i<$olchami;$i++)
{
   foreach($telefonlar[$i] as $kalit=>$qiymat)
{
   echo $kalit. "-" .$qiymat."\n";
}
echo "\n";
}
   
?>

Quyidagi natijaga erishamiz:

Nom-Iphone
Tur-telefon
Brend-Apple

Nom-Samsung S10+
Tur-telefon
Brend-Samsung

Nom-Redmi 7
Tur-telefon
Brend-Xiaomi

Yuqoridagi ko'p o'lchamli massivda, bizda asosiy massiv indekslangan, massivda saqlangan elementlar bog'langan edi.

Lekin biz asosiy massivni bog'langan massiv qilib olishimiz ham mumkin. Ko'p o'lchamli massivda indeks - son yoki ketma-ket emasligi sababli, biz indeksning qiymatlari va kalitlarini topib olishimiz kerak. Biz array_keys() funksiyasidan bog'langan massivdagi kalitlarning massivini olish uchun foydalanamiz.

Keling bir namuna ko'ramiz:

<?php
/* 
    ko'p o'lchamli massivni ishga tushirish
*/
$telefonlar = array(
    array(
        "Nom"=>"Iphone",
        "Tur"=>"telefon",
        "Brend"=>"Apple"
    ),
    array(
        "Nom"=>"Samsung S10+",
        "Tur"=>"telefon",
        "Brend"=>"Samsung"
    ),
    array(
        "Nom"=>"Redmi 7",
        "Tur"=>"telefon",
        "Brend"=>"Xiaomi"
    ),
);
//massiv o'lchami
$olchami = count($telefonlar);
//massiv kalitlari
$kalitlar = array_keys($telefonlar); 
//for siklidan foydalanish
for($i = 0; $i < $olchami; $i++)
{
    echo $kalitlar[$i]. "\n";
    foreach($telefonlar[$kalitlar[$i]] as $kalit=> $qiymat) {
        echo $kalit . " : " . $qiymat . "\n";
    }
    echo "\n";
}

   
?>

Ushbu natijaga ega bo'lamiz:

0
Nom : Iphone
Tur : telefon
Brend : Apple

1
Nom : Samsung S10+
Tur : telefon
Brend : Samsung

2
Nom : Redmi 7
Tur : telefon
Brend : Xiaomi

✅Ko'p o'lchamli massivning afzalliklari

  • Batafsil(katta, to'liq) ma'lumotlarni ko'p o'lchamli massivlarda saqlash imkoni.✔️
  • Uni foydalanuvchi uchun eng qulay va ularning talablari bo'yicha, xoh indekslangan xoh bog'langan qilib ishlatish mumkin. ✔️

Tutorials.uz - telegram kanali O'zbekiston bo'ylab bepul dasturlash darslarini ishlab chiquvchi holis kanal.