Различие между одномерными и многомерными массивами очень простое: многомерные массивы представляют собой обычный массив, у которого простые массивы представлены в качестве элементов, а не строк или скалярных переменных.
Создание многомерного массива
Давайте возьмем пример $arrBooks из прошлого руководства, и расширим его до многомерного массива:
<?php
$arrBooks = array(
‘Comic’ => array(
‘Title’=>‘Superman’,
‘Author’=>’Jerry Siegel and Joe Shuster’,
‘Publication Date’ => ‘1938’),
‘Science Fiction’ => array(
‘Title’=>‘Dune’,
‘Author’=>’Frank Herbert’,
‘Publication Date’=>’1965’),
‘Fantasy’ => array(
‘Title’=>‘The Hobbit’,
‘Author’=>’J.R.R. Tolkien’,
‘Publication Date’=>’1937’),
‘Horror’ => array(
‘Title’=>‘Carrie’,
‘Author’=>’Stephen King’,
‘Publication Date’=>’1974’)
);
?>
Извлечение элементов из многомерного массива
Для того чтобы извлечь отдельный элемент из многомерного массива, нам нужно обратиться к ключам как во внешних, так и во внутренних массивах. Например, давайте рассмотрим PHP-код, представленный ниже:
<?
echo $arrBooks[‘Science Fiction][‘Title’];
echo "<br>";
echo $arrBooks[‘Horror’][‘Author’];
?>
Он отобразит нам:
Dune
Stephen King
Stephen King
Зацикливание многомерного массива
Самый легкий способ зацикливания многомерного массива заключается в том, чтобы разветвить два цикла foreach. Внешний цикл проходит через каждый внешний элемент массива, а внутренний цикл проходит через каждый внутренний элемент массива в пределах выбранного внешнего элемента.
<?
foreach ($arrBooks as $obj_key =>$book)
{
echo "$obj_key Book:<br>";
foreach ($book as $key=>$value){
echo "$key: $value<br>";
}
echo "<br>";
}
?>
Отображение будет примерно следующим:
Comic Book:
Title: Superman
Author: Jerry Siegel and Joe Shuster
Publication Date: 1938
Science Fiction Book:
Title: Dune
Author: Frank Herbert
Publication Date: 1965
Fantasy Book:
Title: The Hobbit
Author: J.R.R. Tolkien
Publication Date: 1937
Horror Book:
Title: Carrie
Author: Stephen King
Publication Date: 1974
Title: Superman
Author: Jerry Siegel and Joe Shuster
Publication Date: 1938
Science Fiction Book:
Title: Dune
Author: Frank Herbert
Publication Date: 1965
Fantasy Book:
Title: The Hobbit
Author: J.R.R. Tolkien
Publication Date: 1937
Horror Book:
Title: Carrie
Author: Stephen King
Publication Date: 1974
Функции массивов
Массивы – это один из наиболее удобных типов переменных. Наряду с их универсальностью, они также могут предоставить различные функции. В предыдущем руководстве мы использовали функцию is_array для того, чтобы определить, была ли переменная массивом, а также функцию sort для того, чтобы сортировать элементы массива. Давайте рассмотрим больше примеров функции массивов.
count($array): подсчитывать число элементов в массиве.
<?
$numBooks = count($arrBooks);
echo "There are $numBooks books in the collection.<br>";
?>
There are 4 books in the collection.
extract($array): конвертирует ассоциативные ключи массива в строчные переменные. Значение каждого ключа становятся значениями каждой переменной.
<?
$arrBooks = array( ‘Comic’ => ‘Superman’,
‘ScienceFiction’ => ‘Dune’,
‘Fantasy’ => ‘The Hobbit’,
‘Horror’ => ‘Carrie’);
extract($arrBooks);
// $arrBooks[‘Comic’] becomes $Comic
// $arrBooks[‘ScienceFiction’] becomes $ScienceFiction
// $arrBooks[‘Fantasy] becomes $Fantasy
// $arrBooks[‘Horror] becomes $Horror
echo "$Comic is a comic book.<br>";
echo "$Fantasy is a fantasy book.<br>";
?>
Superman is a comic book.
The Hobbit is a fantasy book.
The Hobbit is a fantasy book.
extract($array, EXTR_PREFIX_ALL, ‘prefix’): добавляет префикс к строчной переменой для того, чтобы различить ее между массивами с одинаковыми ключами.
<?
$arrBooks = array(
‘Comic’ => ‘Superman’,
‘ScienceFiction’ => ‘Dune’,
‘Fantasy’ => ‘The Hobbit’,
‘Horror’ => ‘Carrie’);
extract($arrBooks, EXTR_PREFIX_ALL, "books");
// $arrBooks[‘Comic’] becomes $books_Comic
// $arrBooks[‘ScienceFiction’] becomes $books_ScienceFiction
// $arrBooks[‘Fantasy] becomes $books_Fantasy
// $arrBooks[‘Horror] becomes $books_Horror
echo "$books_Comic is a comic book.<br>";
echo "$books_Fantasy is a fantasy book.<br>";
$arrFilms = array(
‘Comic’ => ‘Superman Returns’,
‘ScienceFiction’ => ‘Terminator’,
‘Fantasy’ => ‘Dark Crystal’,
‘Horror’ => ‘Friday the 13th’);
extract($arrFilms, EXTR_PREFIX_ALL, "films");
// $arrFilms [‘Comic’] becomes $films_Comic
// $arrFilms [‘ScienceFiction’] becomes $films_ScienceFiction
// $arrFilms [‘Fantasy] becomes $films_Fantasy
// $arrFilms [‘Horror] becomes $films _Horror
echo "$films_Comic is a comic film.<br>";
echo "$films_Fantasy is a fantasy film.<br>";
?>
Superman is a comic book.
The Hobbit is a fantasy book.
Superman Returns is a comic film.
Dark Crystal is a fantasy film.
The Hobbit is a fantasy book.
Superman Returns is a comic film.
Dark Crystal is a fantasy film.
compact(var1, var2, var3): конвертирует список переменных в массив.
<?
$Comic = ‘Batman’;
$ScienceFiction = ‘Dreaming Void’;
$Fantasy = ‘American Gods’;
$Horror = ‘Frankenstein’;
$arrBooks2 = compact (‘Comic’, ‘ScienceFiction’, ‘Fantasy’, ‘Horror’);
foreach ($arrBooks2 as $key => $value) {
print "$value is an example of a $key book.<br>n";
}
?>
Batman is an example of a Comic book.
Dreaming Void is an example of a ScienceFiction book.
American Gods is an example of a Fantasy book.
Frankenstein is an example of a Horror book.
Dreaming Void is an example of a ScienceFiction book.
American Gods is an example of a Fantasy book.
Frankenstein is an example of a Horror book.
В следующем уроке мы рассмотрим больше функций массивов, включая такие функции как: “push”, “pop”, “shift”, “unshift” и “merge”.