Рассмотрим вопрос о таком понятии как массив.

Ранее мы рассказывали о т.н. скалярных (или простых) типах данных. Это означает, что переменные этого типа содержат одно конкретное значение — например, строка, число, false, null.

Массивы относятся к т.н. структурированным типам данных. Это означает, что переменные этого типа данных могут хранить в себе несколько значений.

Рассмотрим пример, аналогичный тому, который был приведен в уроке про понятие переменной — коробки и яблоки.

Допустим у нас есть коробка на которой написано «яблоки» и в ней лежит 5 яблок. Рядом поставим коробку, на которой написано «бананы» и в нее поместим 10 бананов. С ними рядом также поставим коробку «апельсины», и поместим в нее 3 апельсина. Получили три коробки с фруктами. Эти три коробки поместим в одну большую и назовем ее «фрукты». Это и есть массив — большая коробка, в которой хранятся другие коробки со своим содержимым.

В терминах программирования, массив — это область в памяти, которая является объединением других областей памяти. Массивы можно записывать в переменные и тогда, фактически, значение этой переменной будет содержать некоторую группу значений.

Рассмотрим массивы в PHP.

Массивы бывают двух типов — чисельно-индексные (или списки) и ассоциативные.

В этом уроке рассмотрим чисельно-индексные массивы.

Вернемся к примеру про коробку с фруктами. Вместо названий «яблоки», «бананы» и «апельсины» мы пронумеруем соответствующие коробки начиная с нуля. Получим одну большую коробку «фрукты» и внутри нее пронумерованные коробки 0, 1, 2. Это и есть чисельно-индексный массив.

В терминах PHP — это группа значений, которые пронумерованы. Их нумерация по умолчанию начинается с нуля, но это можно изменить в зависимости от поставленных задач.

Определение массива. Для того, чтобы определить массив PHP, используется функция array(), в которой указываются значения элементов массива через запятую:

array( val_1, val_2, val_3, … , val_N )

Значения элементов могут принадлежать к разным типам данных. Также в качестве значения элемента массива можно указать некоторую переменную.

В примере ниже в переменную $fruits были записаны значения, которые соответствуют количеству яблок, бананов и апельсин. Эти значения называют элементами массива.

Доступ к элементам массива. Для получения доступа к конкретному элементу массива необходимо знать его номер. Этот номер называют индексом или ключом. Ключ (индекс) необходимо указать в квадратных скобках справа от переменной массива. Элемент массива можно таким образом переопределить.

Определение нумерации элементов. Для определения нестандартной нумерации элементов массива, используется следующий синтаксис функции array()

array( key_1 => val_1, key_2 => val_2, key_3 => val_3, … , key_N => val_N )

<?php

$fruits = array(5, 10, 3);

$var = 'Something';
$arr = array(5, 10, 3, 'some string', false, 2.54, $var);

$apples_amount = $fruits[0];
$bananas_amount = $fruits[1];
$oranges_amount = $fruits[2];

$fruits[2] = 24; // now we get array of 5, 10, 24

echo '<br>';

$numbers = array(22 => 'twenty two', '100' => 'one hundred', '45' => 'fourty five');
echo $numbers[100]; // we get 'one hundred'

Как было отмечено в предыдущем уроке, массивы невозможно вывести на экран при помощи функции echo, т.к. это строковая функция (оператор). Для выведения ключей и значений элементов массива на экран используется функция print_r (название от Print Recursive).

Эта функция выводит на экран значение ее аргумента — будь то скалярное значение или структурированное. Как правило эта функция используется для отображения массивов и объектов.

<?php

$myArray = array(10 => 'hello', 20 => 'world');
print_r($myArray);

echo '<br>';


echo '<pre>';
print_r($myArray);
echo '</pre>';

В этом уроке рассмотрим понятие ассоциативного массива.

Ассоциативный массив — это массив у которого ключами могут быть не только целые числа, но и строки. При этом их необходимо явно определять, используя функцию array().

Доступ к значениям этого массива осуществляется так же, как и для списков, но ключ указывается в виде строкового значения. Ассоциативный массив может содержать в себе как целые ключи (как чисельно-индексный), так и строковые.

Ниже рассмотрен пример с фруктами, реализованный при помощи ассоциативного массива. Напомним, что у нас есть одна большая коробка фрукты, которая содержит коробки с названиями разных фруктов.

Замечание. При обращении к элементу ассоциативного массива по ключу, сам ключ необходимо указывать в кавычках — т.к. это строка. В противном случае интерпретатор выведет на экран замечание. Детальнее — в уроке про константы.

<?php
$fruits = array('apples' => 5, 'bananas' => 10, 'oranges' => 3);
print_r($fruits);

// we have 10 bananas
echo "We have ";
echo $fruits['bananas'];
echo " bananas";

// changing element of array
$fruits['apples'] = 12;

$arr = array('test', 'test 2', 'some_key' => 'hello');
print_r($arr);

Что будет если мы захотим поместить массив внутрь массива? Мы получим массив в массиве или многомерный массив.

Вернемся к примеру с фруктами. Пусть теперь у нас будут еще и овощи. Возьмем две новые коробки и назовем их ‘баклажаны’ и ‘огурцы’. Эти коробки мы наполним тремя баклажанами и шестью огурцами соответственно. Эти две коробки мы положим в одну большую под названием ‘овощи’. Теперь мы получили две большие коробки — с фруктами и с овощами. Эти две большие коробки поместим в еще большую и назовем ее ‘еда’. Вот мы и получили многомерный массив — коробка, которая содержит коробки, которые содержат коробки.

Реализация многомерных массивов на PHP осуществляется аналогично обыкновенным одномерным массивам. Каждый элемент массива, который также является массивом определяется при помощи функции array()

<?php
$fruits = array('apples' => 5, 'bananas' => 10, 'oranges' => 3);
$vegetables = array('cucumbers' => 6, 'eggplants' => 3);
$food = array($fruits, $vegetables);

// output
echo '<pre>';
print_r($food);
echo '</pre>';
0