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

До сих пор рассматривались только одномерные массивы. Но в РНР имеется возможность работы и с многомерными массивами. Пусть для хранения экзаме­национных оценок используется одномерный массив $test_scores:

code: #php
$test_scores["Иванов"] = 95;
$test_scores["Петров"] = 87;

Но что если надо хранить оценки по нескольким предметам? Для этого удоб­но использовать двухмерный массив, например:

code: #php
<?php
$test_scores["Иванов"][1] = 95;
$test_scores["Иванов"][2] = 85;
$test_scores["Петров"][1] = 87;
$test_scores["Петров"][2] = 93;
print_r($test_scores);
?>

Элемент массива $test_scores["Иванов"][1] содержит оценку Иванова по первому предмету, $test_scores["Иванов"][2] —по второму предмету и т.д. В результате выполнения предыдущего примера будет выведен созданный многомерный массив:

code: #php
Array (
  [Иванов] => Array (
    [1] => 95
    [2] => 85
  )
  [Петров] => Array (
    [1] => 87
    [2] => 93
  )
)

Доступ к элементу многомерного массива осуществляется путем указания всех его индексов, например:

code: #php
echo "Оценка Иванова по первому предмету : ", $test_scores["Ива­нов"][1],   "\n";

Если требуется заменить элемент массива его значением в строковой кон­станте, ограниченной двойными кавычками, подобно тому, как это делается с обычной переменной, следует заключить элемент массива в фигурные скобки и использовать для строковых индексов одиночные кавычки:

code: #php
echo "Оценка Иванова по первому предмету: ($test_scores['Иванов'][1])\n";

Для создания многомерных массивов можно использовать и сокращенную форму, но следует иметь в виду, что в данном случае нумерация второго индекса начинается с 0:

code: #php
<?php
 
$test_score["Иванов"][] = 95;
$test_scores["Иванов"][] = 85;
$test_scores["Петров"][] = 87;
$test_scores["Петров"][] = 93;
print_r($test_scores);
 
?>

В РНР многомерные массивы можно рассматривать как массивы массивов. Например, двухмерный массив можно рассматривать как одномерный массив, элементами которого в свою очередь также являются одномерные массивы. Пример такого описания приведен ниже:

code: #php
<?php
$test_scores = array(
  "Иванов" => array(95,  85),
  "Петров" => array(87,  93));
print_r($test_scores);
?>

В результате будет создан следующий массив:

code: #php
Array (
  [Иванов] => Array (
    [0] => 95
    [1] => 85
  )
 
  [Петров]  => Array (
    [0] => 87
    [1] => 93
  )
)

Если требуется начать нумерацию второго индекса с 1, используется уже из­вестный синтаксис:

code: #php
<?php
$test_scores = array(
  "Иванов" => array  (1 => 95,  85),
  "Пет­ров" => array  (1 => 87,  93)
);
 
print_r  ($test_scores);
?>

В результате будет создан массив следующего вида:

code: #php
Array(
  [Иванов] => Array (
    [1] => 95
    [2]  => 85
  )
 
  [Петров] => Array (
    [1] => 87
    [2]  => 93
  )
)
Книга: PHP в примерах. Купить книгу
Автор: Стивен Хольцнер. Переводчик: С. Банников
Поделиться:

Похожие статьи: