Adi php-də assosiativ massiv. PHP-də Massivlərin öyrənilməsi

05.11.2021

Gününüz xeyir, habrazhiteliki!

Mən məqaləmdə PHP-də çoxölçülü assosiativ massivlərin işlənməsi haqqında danışmaq istəyirəm. Məncə, ondan lazımi məlumatları əldə etmək həmişə əlverişli deyil çoxölçülü massiv. Massiv iki ölçülüdürsə, bu bir şeydir:

massiv("açar1" => "dəyər1", "açar2" => "dəyər2")); ?>

Sonra, əlbəttə ki, bizi maraqlandıran dəyərləri əldə etmək asandır:

Echo $array["dimension1"]["key1"]; // dəyər1

Bəs n ölçülü massivimiz varsa nə etməli? Məsələn, beş ölçülü:

$array = array("dimension1" => array("dimension2" => array("dimension3" => array("dimension4" => array("dimension5" => array("value1" => "Hey! I\ "m value1", "value2" => "Hey! Mən \"m dəyər2"))))));

Dəyəri açarla əldə etmək üçün, məsələn, “value1” aşağıdakı kodu yazmalıyıq:

Echo $array["dimension1"]["dimension2"]["dimension3"]["dimension4"]["dimension5"]["value1"]; // Hey! Mən dəyərim 1

Düzgün olsa da, belə yazıya gözəl deməzdim. Bu qeydi bir az da gözəlləşdirməyi təklif edirəm ki, onu belə göstərək:

Echo easyA($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Hey! Mən dəyərim 1

Razılaşın, standart qeydlə müqayisədə həqiqətən çox gözəl görünür.

Beləliklə, əvvəlcə massivimizi emal edəcək bir sinif yaratmalıyıq. Gəlin onu easyArray adlandıraq və onu Singleton edək:

Kod

class easyArray( private static $instance; // Sinfin vəziyyəti. private $Array; // Sinifə ötürülən massiv. private function __construct())( // Konstruktor fayldan çıxarılıb. ) private function __clone()) ( // Klonlama metodu təqdim olundu. ) ictimai statik funksiya getInstance())( if(null === self::$instance)( self::$instance = new self(); ) return self::$instance; )

Sinifimiz singleton olduqdan sonra ona çox vacib bir metod əlavə edəcəyik ki, nəticədə massiv şəxsi dəyişənə yazılacaq:

Kod

ictimai funksiya loadArray($newArray)( if(is_array($newArray))( $this->Array = $newArray; return $this; )else( $error = "Bağışlayın, siz massivi keçmədiniz."; fırlat yeni İstisna ($xəta);
Koddan görə bilərsiniz ki, biz də metod girişinə nəyin ötürüldüyünü yoxlayırıq. Keçirilmiş massiv olmasaydı, biz sadəcə xəta ilə bir istisna atacağıq " Təəssüf ki, siz serialdan keçmədiniz". Yoxlama uğurlu olarsa, o zaman əldə edilən massivi şəxsi dəyişənə yazırıq və cari obyekti qaytarırıq.

Yaxşı, indi biz sinifimizin sehrli "__get()" metodunu ləğv edəcəyik. Bu, istədiyimiz nəticəni əldə etmək üçün lazımdır. Beləliklə:

Kod

ictimai funksiya __get($index)( if(isset($this->Array[$index]))( if(is_array($this->Array[$index]))( $this->loadArray($this->) Array[$index]); return $this; ($ xəta);

Hər şeydən əvvəl, massivdə tələb olunan açarın mövcudluğunu yoxlayırıq, əgər o yoxdursa, xəta ilə bir istisna atırıq "; "Massivdə çatışmayan açar (".$index.")"". Sonra, tələb olunan açarın massiv olub-olmadığını yoxlayırıq. Əgər massivdə belə bir açar üçün dəyər varsa, biz sadəcə olaraq bu dəyəri qaytarırıq. Əgər bu massivdirsə, onu " loadArray($newArray)" və cari obyekti qaytarın ($this).

Və sinfimizə son toxunuş olaraq, sinifimizin işlədiyi cari massivi qaytaracaq bir metod əlavə edək:

Kod

arrayReturn() ictimai funksiyası ($this->Array; qaytarın)

Beləliklə, sinifimiz hazırdır, lakin dəyərləri əldə etmək üçün indi belə koddan istifadə etməliyik:

Echo easyArray::getInstance()->loadArray($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Hey! Mən dəyərim 1

Olduğundan da uzun oldu. Ancaq bu problemi həll etmək olar və bunun üçün bizə sadə bir funksiya lazımdır:

EasyA($newArray) funksiyası( easyArray::getInstance()->loadArray($newArray); qaytarın)

Yaxşı, indi nəticədə nə əldə etdiyimizi yoxlayaq:

Kod

array("dimension2" => array("dimension3" => array("dimension4" => array("dimension5" => array("value1" => "Hey! I\"m value1", "value2" => "Hey! Mən dəyər 2")))))); tələb_bir dəfə("easyArray.php"); require_once("easyArrayFunction.php"); echo easyA($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Hey! I\"m value1 echo easyA($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value2; // Hey! Mən \"m dəyər2 ?>
Hər şey nəzərdə tutulduğu kimi işləyir.

Bundan əlavə, bu sinif keçilə bilər konfiqurasiya faylları növü:

Kod

array("dimension2" => array("dimension3" => array("dimension4" => array("dimension5" => array("value1" => "Hey! I\"m value1 array.php faylından", "value2" => "Hey! Array.php faylından mən \"m value2")))))); ?>


Bunu etmək üçün aşağıdakı konstruksiyadan istifadə etməlisiniz:

Kod

echo easyA(require_once("array.php"))->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Hey! Mən array.php faylından dəyər1əm

Mən təkəri yenidən ixtira etmişəm, amma düşünürəm ki, bu məqalə həm yeni başlayanlar, həm də digər proqramçılar üçün maraqlı olacaq.

Diqqətiniz üçün təşəkkür edirik.

PHP-də massivin nə olduğunu anlayaq. Massiv sadəcə vahid bütövlükdə təqdim olunan dəyərlər qrupudur. Meyvə səbətini təsəvvür edin. Tərkibində banan, portağal, alma və üzüm var. PHP-də siz belə strukturu massiv kimi təqdim edə bilərsiniz. Səbət massivin özüdür və xüsusi meyvələr onun elementləridir.

İndi massivlərlə təcrübələrimiz üçün layihəmizin olduğu qovluqda bir fayl yaradaq. Gəlin ona zəng edək arrays.php.

PHP-də kvadrat mötərizələrdən istifadə edərək massiv elan edilir, belə ki:

Beləliklə, boş bir massiv yaratdıq.

Köhnə kodda Belə bir massiv tərifinin bir nümunəsini tapa bilərsiniz:

$fruits = massiv();

Bu giriş artıq köhnəlib və istifadə edilməməlidir!

Siz həmçinin artıq bəzi dəyərləri ehtiva edən massiv yarada bilərsiniz. Bu belə edilir:

$fruits = ["alma", "portağal", "üzüm"];

Artıq bildiyimiz var_dump funksiyasından istifadə edərək əldə edilən massivi göstərə bilərsiniz:

Gəlin brauzerdə açaraq bu skriptimizi işə salaq: http://myproject.loc/arrays.php
Aşağıdakıları görəcəyik:

C:\OpenServer\domains\myproject.loc\www\arrays.php:4: massiv (size=3) 0 => "alma" sətri (uzunluq=5) 1 => "narıncı" sətri (uzunluq=6) 2 => "üzüm" sətri (uzunluq=5)

Nömrələnmiş massivlər

Massiv bir obyekt növüdür, yəni massivdir. Size=3 massivin ölçüsüdür (3 elementdən ibarətdir). 0, 1, 2 massiv düymələri, bunlara da deyilir indekslər. Bu açarlar dəyərləri saxlayır, bizim vəziyyətimizdə bu dəyərlər sətirlərdir. Gördüyümüz kimi, massiv düymələri sıfırdan başlayaraq nömrələnir və sonra sadəcə bir artırılır.

Bu düymələrdən istifadə edərək massiv dəyərlərindən birini əldə edə bilərik. Bunun üçün massivin adını qeyd edirik və sonra kvadrat mötərizədə dəyəri almaq istədiyimiz açarı göstəririk.

Məsələn, massivin sıfır elementini (0 düyməsi ilə) əldə etmək üçün aşağıdakıları edəcəyik:

Bu kodun nəticəsi:

2-ci indeksdəki elementi əldə edək:

Nəticə:

Mövcud olmayan indeksi olan bir element əldə etməyə çalışsaq, məsələn - 3:

Sonra belə bir açarı olan elementin tapılmaması barədə xəbərdarlıq alacağıq.

Massiv elementlərinin əlavə edilməsi və silinməsi

Aşağıdakı konstruksiyadan istifadə edərək massivə başqa element əlavə edək:

$fruits = "manqo";

Sonra var_dump istifadə edərək massivimizə yenidən baxaq:

Nəticə 3 indeksli başqa bir elementdir:

C:\OpenServer\domains\myproject.loc\www\arrays.php:7: massiv (size=4) 0 => "alma" sətri (uzunluq=5) 1 => "narıncı" sətri (uzunluq=6) 2 => "üzüm" sətri (uzunluq=5) 3 => "manqo" sətri (uzunluq=5)

Massiv elementlərini silmək üçün qurulmamış konstruksiyadan istifadə edin. 2-ci indeksdəki elementi çıxaraq:

Bu kodun nəticəsi:

C:\OpenServer\domains\myproject.loc\www\arrays.php:9: massiv (size=3) 0 => "alma" sətri (uzunluq=5) 1 => "narıncı" sətri (uzunluq=6) 3 => "mango" sətri (uzunluq=5)

Gördüyümüz kimi, indeksi 2 olan element artıq mövcud deyil və düymələrin seriya nömrələrində "deşik" göründü. İndi yeni bir element əlavə etsək, onun indeksi 4 olacaq, lakin bu dəlik hələ də qalacaq. Bu, tam olaraq necə işləyir və yadda saxlamağınız lazım olan budur.

Və yenidən düymələrə qayıdın

Ümumiyyətlə, siz hətta massiv yaradanda belə bu düymələri özünüz təyin edə bilərsiniz. Bu kimi:

Nəticə:

C:\OpenServer\domains\myproject.loc\www\arrays.php:5: massiv (size=3) 5 => "alma" sətri (uzunluq=5) 3 => "narıncı" sətri (uzunluq=6) 9 => "üzüm" sətri (uzunluq=5)

Gördüyümüz kimi, düymələr indi 5, 3 və 9-dur.
İndi massivə element əlavə etsək, o, açarın maksimum ədədi dəyərindən bir böyük indeksə sahib olacaq:

Nəticə:

C:\OpenServer\domains\myproject.loc\www\arrays.php:7: massiv (size=4) 5 => "alma" sətri (uzunluq=5) 3 => "narıncı" sətri (uzunluq=6) 9 => "üzüm" sətri (uzunluq=5) 10 => "manqo" sətri (uzunluq=5)

Siz həmçinin verilmiş düymə ilə massivə dəyərlər əlavə edə bilərsiniz, məsələn, biz massivə manqo əlavə etmək və onun dəyərinin 20 indeksində saxlandığından əmin olmaq istəyirik. Bu qədər sadədir:

Nəticə:

C:\OpenServer\domains\myproject.loc\www\arrays.php:7: massiv (size=4) 5 => "alma" sətri (uzunluq=5) 3 => "narıncı" sətri (uzunluq=6) 9 => "üzüm" sətri (uzunluq=5) 20 => "manqo" sətri (uzunluq=5)

Əgər belə bir açar üçün dəyər artıq massivdədirsə, o, sadəcə olaraq yenisi ilə əvəz olunacaq. Məsələn, almanı manqo ilə əvəz edək:

Nəticə:

C:\OpenServer\domains\myproject.loc\www\arrays.php:5: massiv (size=3) 5 => "alma" sətri (uzunluq=5) 3 => "narıncı" sətri (uzunluq=6) 9 => "üzüm" sətri (uzunluq=5) C:\OpenServer\domains\myproject.loc\www\arrays.php:9: massiv (size=3) 5 => "mango" sətri (uzunluq=5) 3 = > "narıncı" sətri (uzunluq=6) 9 => "üzüm" sətri (uzunluq=5)

Assosiativ massivlər

Rəqəmsal düymələrə əlavə olaraq, adi sətirlərdən istifadə edə bilərsiniz. Belə massivlər assosiativ adlanır. Bu vəziyyəti təsəvvür edək: hansısa məqalə var, onun adı, mətni və müəllifi var. O, asanlıqla massiv kimi təqdim edilə bilər. Gəlin bunu edək:

"Məqalə adı", "text" => "Məqalə mətni"]; $article["author"] = "Müəllifin adı"; var_dump($məqalə);

Bu kodun nəticəsi:

C:\OpenServer\domains\myproject.loc\www\arrays.php:6: massiv (size=3) "title" => string "Məqalə başlığı" (uzunluq=29) "text" => string "Məqalə mətni" (uzunluq=23) "author" => sətir "Müəllif adı" (uzunluq=19)

Əla, indi bunu HTML işarələmə daxilində istifadə edə bilərik:

"Məqalənin adı", "text" => "Məqalənin mətni", "author" => "Məqalənin müəllifi" ]; ?> <?= $article["title"] ?>



Nəticə:

Çoxölçülü massivlər

Yadınıza salın, dərsin əvvəlində dedim ki, massiv düymələri bəzi dəyərləri saxlayır və bizdə bunlar sətirlərdir. Beləliklə, massivin elementi, ümumiyyətlə, hər hansı bir şey ola bilər. Hətta serialın özü də. =)

"Məqalənin başlığı", "text" => "Məqalə mətni", "müəllif" => [ "first_name" => "İvan", "soyad_adı" => "İvanov" ] ]; var_dump($məqalə);

Nəticə:

C:\OpenServer\domains\myproject.loc\www\arrays.php:10: massiv (size=3) "title" => string "Məqalə başlığı" (uzunluq=29) "text" => string "Məqalə mətni" (uzunluq=23) "müəllif" => massiv (ölçü=2) "ilk_ad" => sətir "İvan" (uzunluq=8) "soyadı" => "İvanov" sətri (uzunluq=12)

Çox sadədir, məqalə bir massivdir, müəllif açarı da massivdən ibarətdir.
Müəllifin adını almaq üçün aşağıdakı kodu istifadə etməlisiniz:

"Məqalənin başlığı", "text" => "Məqalə mətni", "müəllif" => [ "first_name" => "İvan", "soyad_adı" => "İvanov" ] ]; echo $article["author"]["first_name"];

Əvvəlcə $article massivində müəllif açarının dəyərini aldıq, bu dəyər massiv oldu; Və sonra bu massivdən birinci_ad açarının dəyərini aldıq. Və bu kodun nəticəsi, əlbəttə ki:

İvan

İndi bu dəyərləri artıq istifadə etdiyimiz şablonda istifadə edək:

"Məqalənin başlığı", "text" => "Məqalə mətni", "müəllif" => [ "first_name" => "İvan", "soyad_adı" => "İvanov" ] ]; ?> <?= $article["title"] ?>



Nəticə:

Təbii ki, bu dəyərin içərisində bir massiv, onun içində isə başqa bir massiv yarada bilərsiniz, yorulana qədər.

Növbəti dərsdə massivlərlə işləməyin daha mürəkkəb və maraqlı nümunələrinə baxacağıq.

Dərsdə PHP-də massivlərlə işləmək, massiv elan etmək imkanları, massivlərin növləri: çoxölçülü və assosiativ massivlər haqqında məlumat veriləcək.

  1. Rəqəm indeksləri olan massivlər
  2. $fruits="alma"; $fruits="armud"; $fruits="portağal"; $fruits="ərik";

    Massivlərin işə salınması üçün bu seçim bu gün praktiki olaraq istifadə edilmir. Massivlərlə işləmək üçün aşağıdakı variantdan istifadə olunur:

  3. Assosiativ massiv
  4. Massiv yaratmaq üçün bu seçim massiv obyektindən istifadə edir:

    $fruits = massiv(1 => "alma", 2 => "armud", 3 => "portağal", 4 => "ərik"); // başlayaraq PHP versiyaları 5.4 $fruits = massiv[ 1 => "alma", 2 => "armud", 3 => "portağal", 4 => "ərik" ];

    Massiv Elementlərinə daxil olmaq

    1 2 3 4 5 6 7 8 $fruits [ 0 ] = "alma" ; $fruits [ 1 ] = "armud" ;$fruits [ 2 ] = "portağal" ;
    $fruits [ 3 ] = "ərik" ; əks-səda"Massivin ilk elementi"
    $fruits [ 3 ] = "ərik" ; .$fruits[0]. "
    " ;

    "; əks-səda
    "Massivin ikinci elementi"
    .
    ";

    $meyvələr[1]. "

    "Massivin üçüncü elementi". $meyvələr[2]. ")

    $fruits="alma"; $fruits="armud"; $fruits="portağal"; $fruits="ərik"; echo "Massivin ilk elementi "dir. $ meyvələr."

    "; echo "Massivin ikinci elementi ". $fruits .""; echo "Massivin üçüncü elementi ". $fruits ."

    Proqramın icrasının nəticəsi olacaq:


    ";

    Əhəmiyyətli:
    Assosiativ massivdə elementin indeksi rəqəm deyil, söz ola bilər (növ
    simli
    ";

    Nəticə:

    "Massivin üçüncü elementi" Bir misala baxaq:

    Misal:

    Tələbələrin adlarının, soyadlarının və yaşlarının dəyərləri ilə bir sıra tələbə yaradın. Massiv elementlərinin dəyərlərini göstərin $student = massiv("Ad" => Con, "Soyad" => Smith, "Yaş" => 20); echo "istifadəçi adı" . $student["Ad"] . "($student["Ad"] = "John"; $student["Soyadı"] = "Smit"; $student["Yaş"] = 20; echo "istifadəçi adı" . $student["Ad"] . "):

    "; echo "istifadəçinin soyadı " . $student["Soyad"] ."

    "; echo "istifadəçinin yaşı " . $student["Yaş"] ."

    Sətir açarları (indekslər) həmişə dırnaqlara daxil edilməlidir

    Açarı olmayan indeksləşdirilmiş massivlər: Onu da nəzərə almaq lazımdır ki, massiv qiymətlərlə inisiallaşdırılarkən massivdəki indekslərin ümumiyyətlə yazılmasına ehtiyac yoxdur. Sonra sözdə yaradırıq
    massiv kolleksiyası

    1 2 3 4 5 6 7 8 9 kolleksiya obyekti

    $student = massiv ("John" , "Smith" , 20 );

    Nəticə:

    $student = massiv("John","Smith", 20);

    Açarı olmayan indeksləşdirilmiş massivlər: Bu halda tərcüməçi özü onlara 0-dan başlayaraq ədədi indekslər təyin edəcək Misal tip çevrilmələri və elementlərin yenidən yazılması.

    1 2 3 4 5 6 7 8 9 10 11 12 "1" , 2 => 2 , "multi" => massiv ( "1_1" => "1_1" ) );

    var_dump($array_odnom["birinci"]);

    Nəticə:

    var_dump($array_odnom[2]);

    "; echo "Massivin ikinci elementi ". $fruits ." var_dump($array_odnom["multi"]["1_1"]);


    ?>
    1 2 3 4 5 6 7 8 9 10 11 12 "1", 2 => 2, "multi" => massiv("1_1" => "1_1")); var_dump($array_odnom ["birinci"]); var_dump($array_odnom); var_dump($array_odnom ["multi"]["1_1"]); ?>

    Sətir(1) "1" int(2) sətir(3) "1_1"

    ölçüləri 3 x 2 olan ikiölçülü massiv yaradın. Onu ilk sətir üçün dəyərlərlə doldurun: “1_1”, “1_2”, “1_3”; ikinci sətir üçün: “2_1”, “2_2”, “2_3”. Massivin ilk elementini göstərinİcra:



    $array_odnom = massiv ( 1 => massiv ( 1 => "1_1" , 2 => "1_2" , 3 => "1_3" ) , 2 => massiv ( 1 => "2_1" , 2 => "2_2" , 3 => "2_3" ) , );
    echo $array_odnom [ 1 ] [ 1 ] ;

    $array_odnom = massiv(1 => massiv(1 => "1_1", 2 => "1_2", 3 => "1_3"), 2 => massiv(1 => "2_1", 2 => "2_2" , 3 => "2_3")); echo $array_odnom;

    İş php2_1:
    iki ölçülü 3 x 3 massiv yaradın - Pifaqor vurma cədvəlinin yuxarı sol küncü (1, 2, 3; 4, 6, 8 ...)
    Laboratoriya işi:

    Tutaq ki, sizin bir növ reklamınız var və bu reklamı göndərməli olduğunuz bir neçə fərqli insan var. Bunu etmək üçün siz reklamın məzmunu ilə bir şablon hazırlayırsınız, onun içərisində bir sıra dəyişən parametrlər var: insanların adları və hadisələr silsiləsi. Ekranda son reklamın bir versiyasını göstərin. Massivləri müəyyən etmək üçün assosiativ massivdən istifadə edin.
    Reklam şablonundan istifadə edin və rənglərə diqqət yetirin: Qırmızı - massivlər. Qəhvəyi – ədədi dəyişən. .
    Mavi - daimi.
    Hörmətli İvan İvanoviç!


    Sizi dəvət edirik
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 gün açıq qapılar Tədbirin tarixi: 12 may.) ; Hörmətlə, Vasili. Kodu tamamlayın: // daimi bəyannamə müəyyən ("İŞARA" , "Hörmətlə, Vasya"// alıcı adları üçün massiv $adlar = massiv (... );
    "
    // hadisələr üçün massiv

    $events = massiv("op_doors" =>
    "açıq qapı" günü

, "vistavka" => "sərgi", ... ); $str = Onlarsız proqramlaşdırmanı təsəvvür etmək belə çətindir. Massiv nədir?
Massiv strukturlaşdırılmış verilənlər toplusudur.
Onların strukturuna görə bunu müəyyən etmək olar sadə massiv və ya assosiativ. Hansının daha yaxşı olduğunu dəqiq söyləmək mümkün deyil, çünki... Vəziyyətdən asılı olaraq bu və ya digər növdən istifadə edilməlidir.

PHP-də sadə massiv necə yaradılır

Sadə massiv belə görünür:

Dərhal diqqətinizi məlumatlara cəlb etmək istərdim (bəli, mən bunu qəsdən belə yazdım :)). Məlumat növü sətri və ya $meyvələr[2]. " həmişə dırnaq içərisində yazın, hansının, həm tək, həm də qoşa olanların işləyəcəyi fərqi yoxdur (əsas odur ki, sətir eyni dırnaq işarəsi ilə başlayır və bitir). 29 rəqəminin bir növü var tam ədəd, və ya nömrə - bu məlumat növləri üçün sitatlar lazım deyil.
$my_array massivinin necə göründüyünü yoxlayaq:

"; print_r($my_array); echo ""; /* Array əldə edin ( => Kafedra => Bulud => 29) */ ?>

Sadə massiv belə görünür.
0,1,2 — massivimizin indeksləri. İndekslərin köməyi ilə bir massivdən konkret bir şey çıxara bilərik.

Həmçinin, yazsaq eyni massivi yarada bilərik:

Və üçüncü bir yol var:

"Stul", 1 => "Bulud", 2 => 29);?>

Və dördüncü :)

indekslər 0-dan doldurulacaq.

PHP assosiativ massiv nədir

Biz artıq sadə massivin nə olduğunu anladıq. Assosiativ massiv bununla fərqlənir indekslər əvəzinə düymələrdən istifadə olunur. Yəni, dəyərlərə daxil olmaq üçün artıq 0,1 və ya 2-dən istifadə etməyəcəyik, gəlin sadə massivimizi assosiativ olaraq yazaq:

Kafedra => Bulud => 29) */ ?>

Və zəng etmək üçün istifadə edəcəyik

Nömrə əvəzinə ( indeks) mənalı bir ad (assosiasiya) təyin etdik və indeksimizi indi çağırmaq olar massiv açarı(əşya, göy, nömrə). Assosiativ massiv üçün ən populyar və bəlkə də ən əlverişli notasiya:

"Kreslo", "səma" => "Bulud", "nömrə" => 29); ?>

Çoxölçülü massiv

Bu nəhəng haqqında bir neçə kəlmə :)

massiv ("rəng" => "qırmızı", "il" => "2010", "marka" => "M5"), "audi" => massiv ("rəng" => "qara", "il" = > "2011", "marka" => "TT")); çap_r($avtomatik); // massiv çıxış echo $auto["bmw"]["marka"]; // M5 ?>

Anladığınız kimi, əvvəllər sətir və ya ədəd olan dəyər əvəzinə indi massiv ( Mən sizə massiv daxilində massiv yaradacağam ki, siz massivi çağırdığınız zaman başqa massiv olsun. :)).

Ən son yeniləmə: 1.11.2015

Massivlər verilənlər toplusunu və ya elementləri saxlamaq üçün nəzərdə tutulmuşdur. Massivdəki hər bir elementin özünəməxsus açarı və dəyəri var. Beləliklə, telefon modellərinin siyahısını bir massivdə saxlayaq:

Samsung Galaxy ACE II"; $telefonlar = " Sony Xperia Z3"; $telefonlar = "Samsung Galaxy III"; üçün($i=0;$i "; ?>

Burada dörd elementlə $phones massivi yaradılmışdır. Massivdəki hər bir element açar-dəyər cütünü təmsil edir. Beləliklə, birinci element $phones = "Nokia N9" açarı var - 0 rəqəmi və dəyəri - "Nokia N9" sətri. Belə massivlərdə rəqəmli düymələrə indekslər də deyilir.

Massivdəki elementlərin sayını tapmaq üçün count() funksiyasından istifadə edə bilərsiniz. Düymələrin 0-dan 3-ə qədər sıralanmasına və massivin ölçüsünü bildiyinə görə, massiv elementlərini for döngəsində göstərə bilərsiniz.

Elementlərin açarları və dəyərləri arasındakı əlaqəni daha aydın etmək üçün print_r funksiyasından istifadə edərək massivi çap edək:

Print_r($telefonlar);

Aşağıdakı çıxışı alacağıq:

Massiv ( => Nokia N9 => Samsung Galaxy ACE II => Sony Xperia Z3 => Samsung Galaxy III)

Bu massiv yaradılması da aşağıdakılara bərabər olacaq:

"; ?>

Element açarı göstərilməyibsə, PHP açar kimi nömrələrdən istifadə edir. Bu halda, düymələrin nömrələnməsi sıfırdan başlayır və hər bir yeni açar bir artır.

Massivdəki elementin açarını bilməklə biz bu elementə daxil ola, onun dəyərini əldə edə və ya dəyişə bilərik:

// elementi 1 düyməsi ilə əldə edin $myPhone = $phones; əks-səda "$myPhone
"; // yeni dəyərin təyin edilməsi $phones = "Samsung X650"; echo "$phones"
";

Yalnız tam ədədlər deyil, həm də sətirlər açar kimi istifadə edilə bilər:

Belə massivlər də adlanır assosiativ.

massiv operatoru

Massiv yaratmağın bir yolu yuxarıda müzakirə edilmişdir. Lakin başqa biri də var ki, o, array() operatorunun istifadəsini nəzərdə tutur.

array() operatoru elementlər toplusunu qəbul edir. Burada açarlar da açıq şəkildə göstərilməyib. Buna görə də PHP avtomatik olaraq elementləri sıfırdan nömrələyir. Ancaq hər bir element üçün bir açar da təyin edə bilərik:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); echo $phones["samsumg"]; ?>

=> əməliyyatı açarı müəyyən bir dəyərlə əlaqələndirməyə imkan verir.

Assosiativ massivlər üzərində iterasiya

Yuxarıda necə istifadə edəcəyimizə baxdıq döngə üçün düymələrin 0-dan 3-ə qədər rəqəmlərlə ardıcıl verildiyi massivin bütün elementlərini çap edin. Lakin bu, assosiativ massivlərlə işləmir. Və onlar üçün PHP-də xüsusi bir döngə növü var - foreach...as :

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); foreach($telefon kimi $element) echo "$item
"; ?>

Foreach dövrəsində bütün elementlər ardıcıl olaraq massivdən çıxarılır və onların dəyəri as açar sözündən sonra göstərilən dəyişəndə ​​yerləşdirilir. Bu halda, $phones massivindəki bütün dörd dəyər öz növbəsində $item dəyişəninə yerləşdirilir. Massivdən sonuncu element alındıqda, dövrə başa çatır.

Foreach döngəsi yalnız dəyərləri deyil, həm də element açarlarını əldə etməyə imkan verir:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); foreach($telefonlar $açar=>$dəyər) echo "$key => $value
"; ?>

Burada döngənin elementləri arasında təkrarlanan zaman elementin açarı $key dəyişəninə, dəyəri isə $value dəyişəninə köçürüləcək.

Foreach döngəsinə alternativ siyahıdan və hər bir funksiyadan istifadə etməkdir:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); isə (siyahı($açar, $dəyər) = hər($telefon)) əks-səda "$key => $dəyər
"; ?>

while döngəsi hər bir funksiya false qaytarana qədər işləyəcək. Hər bir funksiya $phones massivinin bütün elementləri arasında təkrarlanır və onu elementin açarı və dəyərini ehtiva edən massiv kimi qaytarır. Sonra bu massiv ötürülür funksiyaların siyahısı və massivin dəyərlərini mötərizə daxilində dəyişənlərə təyin edir. Hər bir funksiya $phones massivi ilə təkrarlanmağı başa vurduqda, o, false qaytaracaq və while dövrü bitəcək.

Çoxölçülü massivlər

Əvvəlki nümunələrdə yalnız bir ölçülü massivlər nəzərdən keçirildi, burada element dəyərləri ədədləri və ya sətirləri təmsil edir. Lakin PHP-də massivlər çoxölçülü ola bilər, yəni massivin elementinin özü massivdir. Məsələn, çoxölçülü massiv yaradaq:

massiv("iPhone5", "iPhone5s", "iPhone6") , "samsumg"=>array("Samsung Galaxy III", "Samsung Galaxy ACE II"), "nokia" => massiv("Nokia N9", "Nokia" Lumia 930"), "sony" => massiv("Sony XPeria Z3", "Xperia Z3 Dual", "Xperia T2 Ultra")); foreach ($brand olaraq $telefonlar => $elementlər) ( əks-səda "

$marka

"; əks-səda"
    "; foreach ($ açarı olaraq $ maddələr => $ dəyər) ( əks-səda "
  • $ dəyər
  • "; ) əks-səda "
"; } ?>

Və çıxış edərkən 4 siyahı alacağıq:

Verilmiş elementə daxil olmaq üçün siz həmçinin kvadrat mötərizədə düymələri göstərməlisiniz. Məsələn, birinci massivin birinci elementinə baxaq. Birinci massivin açarı "alma" olduğundan və birinci massivdəki birinci elementin açarı 0 rəqəmidir (çünki biz açarları açıq şəkildə göstərməmişik):

Echo $phones["alma"];

Üçüncü massivin ikinci elementini oxşar şəkildə əldə edə bilərsiniz:

Echo $phones["nokia"];

Tutaq ki, iç-içə massivlər də assosiativ massivləri təmsil edir:

array("alma" => "iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9"), "planşetlər" => array("lenovo" => "Lenovo IdeaTab A3500" , "samsung" => "Samsung Galaxy Tab 4", "alma" => "Apple iPad Air")); foreach ($tovar kimi $texnika => $elementlər) ( echo "

$ məhsul

"; əks-səda"
    "; foreach ($ açarı olaraq $ maddələr => $ dəyər) ( əks-səda "
  • $ açar: $ dəyər
  • "; ) əks-səda "
"; ) // elementlərdən birinə fərqli qiymət təyin edin $technics["phones"]["nokia"] = "Nokia Lumnia 930"; // bu dəyəri göstər echo $technics["phones"]["nokia" ];