Многомерни масиви в PHP

Масив, който представлява прост списък, с по няколко елемента, може да се нарече едномерен. Например масивът $hrana (от статията Какво е масив (array) в PHP?) фактически е списък, на който зададохме да съдържа няколко храни – домати, ябълки, хляб и пилешко. Такива масиви се наричат едномерни. По-често обаче се налага да се работи със списъци, чиито елементи съдържат други списъци с елементи (подсписъци). Например в един списък на храни може да имаме елемента „месо“, който да съдържа подсписък с няколко вида месо, примерно „пилешко“, „телешко“ и „свинско“. Съответно елементът „пилешко“ може да съдържа на свой ред подсписък с елементите „пилешки бутчета“, „пилешки крилца“, „пилешки гърди“ и т.н.

Такива вложени един в друг списъци е лесно да се представят чрез т.нар. многомерни масиви. Многомерните масиви, както подсказва названието им, съдържат в себе си други масиви. Многомерните масиви могат да бъдат двумерни, тримерни и т.н.

Да направим двумерен масив, който да съдържа елемента „месо“ с поделементите „пилешко“, „телешко“ и „свинско“. Кодът може да изглежда по следния начин:

<?php
$hrana[meso][1] = "пилешко";
$hrana[meso][2] = "телешко";
$hrana[meso][3] = "свинско";
echo $hrana[meso][2];
?>

Този код ще изведе на екран елемента „телешко“. От примера се вижда, че след като масивът е създаден, обръщането към някакъв негов елемент става като след името на масива се изпишат в квадратни скоби идентификационните ключовете или номера на съответния елемент. Ако се извиква стойност от двумерен масив, както е в случая, след името на масива ще трябва да се изпишат две квадратни скоби с ключове или номера; ако се извиква елемент от тримерен масив се изписват три квадратни скоби с ключове или номера и т.н.

В един многомерен масив може да разположите колкото желаете списъци и подсписъци, например:

<?php
$hrana[meso][pileshko][butcheta] = "пилешки бутчета";
$hrana[meso][pileshko][krilca] = "пилешки крилца";
$hrana[meso][pileshko][gyrdi] = "пилешки гърди";
$hrana[plodove][yabulki] = "ябълки";
$hrana[plodove][krushi] = "круши";
$hrana[plodove][banani] = "банани";
echo "Вторият елемент на списъка е {$hrana[meso][pileshko][krilca]},
а последният е {$hrana[plodove][banani]}";
?>

Горният код ще изведе на екран съобщението Вторият елемент на списъка е пилешки крилца, а последният е банани.

Извикването на елемент от многомерен масив в низ става като названието на масива и съответните ключове или номера се поставят в големи скоби. Забележете, че в този пример вътре в низа, т.е. в изречението след echo, името на масива и ключовете на стойностите са поставени именно в такива скоби – {}. Ако махнем скобите и напишем:

echo „Вторият елемент на списъка е $hrana[meso][pileshko][krilca],
а последният е $hrana[plodove][banani]“;

ще получим като резултат съобщението Вторият елемент на списъка е Array[pileshko][krilca], а последният е Array[banani].

Многомерен масив може да се създаде и като се ползва функцията array и символите => по следния начин:

<?php
$hrana = array("meso" => array("пилешко", "телешко",
"свинско"), "plodove" => array("ябълки", "круши",
"банани"));
echo $hrana[meso][0];
?>

Горният код ще ни покаже резултат „пилешко“, тъй като в случая няма зададени ключове или номера на стойностите от списъка с видовете месо и затова на стойността „пилешко“ автоматично е присвоен идентификационен номер 0.

Обновена: 18.03.2022
Беше ли Ви полезна тази статия?

Вижте още