Уроки PHP - урок 10 - Массивы
До этого урока мы рассматривали только числовые и строковые переменные, а в этом мы познакомимся с массивами. Массивы могут включать в себя как числовые, так и строковые переменные. Поэтому собственно они и называются массивами.
Суть массива в следующем, есть множество ключей массива и есть множество значений массива. Каждому ключу массива принадлежит одно значение. Например у нас есть ключи 1,2,3, то значения могут быть 4, 'Hello World', true. Записываются массивы так же как и переменные, со знаком доллара:
$tree = array();
Только для создания массива мы используем функцию array().
На самом деле объявлять массив, также как и объявлять переменные в PHP необязательно. Но для понимания чужого кода всегда лучше видеть откуда появляются переменные и какого они типа.
А теперь определим указанный выше нами массив:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); ?>
Обратите внимание на синтаксис. Сначала все идет как у переменной, мы присваиваем значение. Потом идет ключевое слово array, которое означает, что переменная будет массивом. Дальше в круглых скобках идут пары ключ/значение.
Причем пишутся таким вот образом:
array( ключ1 => значение1, ключ2 => значение2, );
Сначала идет ключ, дальше идет знак равно и следом за ним без пробела знак больше. После знака больше идет пробел и значение соответствующее ключу массива. После пары ключ/массив мы ставим запятую. И так для каждой пары ключ/массив.
Записать массив можно и встрочку:
<?php $tree = array(1 => 4, 2 => 'Hello World', 3 => true,); ?>
При этом переменная $tree будет одинаковая как в том, так и в другом случае. Просто первый вариант записи удобнее читать, об правилах записи мы поговорим попозже, сейчас нам важнее понять смысл.
Распечатать массив на экран можно с помощь функции print_r(). В отличие от функции print, print_r использует скобки.
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); print_r($tree); ?>
В результате мы распечатаем массив на экран
Array ( [1] => 4 [2] => Hello World [3] => 1 )
Если мы добавим тег <pre>, то вид распечатанного массива будет лучше:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); print '<pre>'; print_r($tree); print '</pre>'; ?>
Получиться нечто такое:
Array ( 1 => 4, 2 => 'Hello World', 3 => true, )
Теперь когда мы научились создавать массивы давайте попробуем извлекать из массивов информацию:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); print $tree[2]; ?>
Таким образом мы извлекли второй элемент массива 'Hello World' и вывели его на экран. Чтобы обратиться к значению какого-то ключа нужно написать имя переменной массива, а дальше в квадратных скобках этот ключ. Так можно вызвать и $tree[1], $tree[3].
Теперь давайте посмотрим как можно добавить элемент в массив. Достаточно указать пустой ключ:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); $tree[] = 'Еще один элемент'; print '<pre>'; print_r($tree); print '</pre>'; ?>
Таким образом мы выведем вот такой массив:
Array ( [1] => 4 [2] => Hello World [3] => 1 [4] => Еще один элемент )
Как вы видете указав пустой ключ PHP добавляет следующий по счету номер ключа. Но мы можем добавить ключ не по порядковому числу, а сразу указав ключ в квадратных скобках:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); $tree[6] = 'Другой элемент'; print '<pre>'; print_r($tree); print '</pre>'; ?>
Получится, что у нас есть ключи 1,2,3,6, а ключей 4,5 нет. Поэтому стоить запомнить, что если в массиве встречаются ключи например 103, 105, то это не значит что в массиве есть ключ 104. Проверить или нет можно с помощью функции
if(empty($tree[104])){ }
Если мы указываем в квадратных скобках уже существующий ключ, то мы можем переписать значение:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); $tree[3] = 'Другой элемент'; print '<pre>'; print_r($tree); print '</pre>'; ?>
Новых элементов не будет создано, но значение третьего ключа будет переписано.
Также еще стоит обратить внимание на то, что ключом массива может быть и текст:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 'key3' => true, ); print '<pre>'; print_r($tree); print '</pre>'; ?>
В этом случае мы пишем значение ключа в кавычках (одинарных или двойных). Также мы вызываем значение массива:
print $tree['key3'];
Думаю с массива все понятно.. на данный момент, потому что сейчас я буду рассказывать про многомерный массивы.
PHP многомерные массивы
Многомерные массивы как следует из названия имеют несколько измерений. Самым простым объяснением может быть таблица умножения, у нас есть два числа и результат, который зависит от этих двух чисел.
<?php $multi = array(); $multi[1][1] = 1; $multi[1][2] = 2; $multi[1][3] = 3; $multi[2][1] = 2; $multi[2][2] = 4; $multi[2][3] = 6; $multi[3][1] = 3; $multi[3][2] = 6; $multi[3][3] = 9; print '<pre>'; print_r($multi); print '</pre>'; ?>
Если в одномерном массиве у нас один ключ, то в двумерном у нас их два. В трехмерном массиве - три ключа и так далее. Причем порядок ключей имеет значение, то есть $multi[1][3] и $multi[3][1] - это разные числа.
<?php $multi = array(); $multi[1][3] = 3; $multi[3][1] = 'Hello, World!'; print '<pre>'; print_r($multi); print '</pre>'; ?>
Задавать массивы можно сразу для многих значений:
<?php $multi = array( 1 => array( 1 => 1, 2 => 2, 3 => 3, ), 2 => array( 1 => 2, 2 => 4, 3 => 6, ), 3 => array( 1 => 3, 2 => 6, 3 => 9, ), ); print '<pre>'; print_r($multi); print '</pre>'; ?>
Если у меня появяться еще примеры про массивы, я приведу их потом, а пока к следующему уроку.