Уроки 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>';
?>
Если у меня появяться еще примеры про массивы, я приведу их потом, а пока к следующему уроку.