<?php
$a = array();
$a = [];
?>
Можно создать не пустой массив, а содержащий элементы. Элементами массива могут быть практически любые типы данных. Попробуем заполнить массив числами и словами:
<?php
$a = array('Сыр', 'Мышь', 15, 'Кот', 18);
?>
Получился массив, который содержит 5 элементов. Чтобы получить значение одного из них, необходимо выбрать его по ключу. Если массив не ассоциативный, то ключи ставятся автоматически, начиная с нуля. Приведём пример обращения:
<?php
$a = array('Сыр', 'Мышь', 15, 'Кот', 18);
echo $a[0]; // результат: 'Сыр'
echo $a[1]; // результат: 'Мышь'
echo $a[4]; // результат: '18'
?>
Можно самостоятельно задать ключи массива. К примеру, зададим ключи в виде произвольных чисел. Чтобы задать ключ элемента массива, необходим поставить его название и после него значок =>:
<?php
$a = array(5 => 'Сыр', 6 => 'Мышь', 7 => 15, 8 => 'Кот', 9 => 18);
echo $a[5]; // результат: 'Сыр'
echo $a[6]; // результат: 'Мышь'
echo $a[9]; // результат: '18'
?>
Рассмотрим способы добавления элемента в массив. Возьмём массив из последнего примера и добавим в него произвольные элементы несколькими разными способами:
<?php
$a = array(5 => 'Сыр', 6 => 'Мышь', 7 => 15, 8 => 'Кот', 9 => 18);
$a[10] = 'Котята'; // добавит элемент в массив с ключом 10 и значением 'Котята'
$a[] = 'молоко'; // добавит в конец массива элемент со значением 'молоко'
array_push($a, 35); // добавит в конец массива элемент со значением 35
?>
Теперь разберёмся как удалять элементы массива. Попробуем удалить первый и последний элемент. А так же элемент с определённым ключом:
<?php
array_shift($a); // удалит первый элемент массива
array_pop($a); // удалит последний элемент массива
unset($a[5]); // удалит элемент массива с ключом 5
?>
Массивы с числами в виде ключей сами по себе довольно бесполезны. Давайте же сделаем массив, который может встретиться в реальном проекте. К примеру, массив, который возникает в процессе авторизации пользователя на сайте. В этом массиве будут храниться логин, мэйл и пароль пользователя. Обычно такой массив делается во время приёма данных от пользователя, после ввода их в форму входа на сайт. И давайте сразу запишем массив в столбик для наглядности. С точки зрения PHP это не вызовет ошибки, но позволит нам лучше воспринимать информацию. В добавок вместо ключей-цифр поставим текст:
<?php
$a = array(
'login' => 'mouse',
'email' => 'mouse@mousedc.ru',
'password' => 'best_password'
);
echo $a['login']; // результат: 'mouse'
echo $a['email']; // результат: 'mouse@mousedc.ru'
echo $a['password']; // результат: 'best_password'
?>
Такие массивы с текстовыми ключами называются ассоциативными. В программировании сайтов они встречаются намного чаще, чем массивы без ключей или с ключами-цифрами. Они сильно облегчают жизнь программистам.
Обратите внимание, что в ключах ассоциативных массивов лучше ставить латинские буквы. Кириллица может вызвать проблемы и непредсказуемое поведение PHP. Так же как и названия переменных, написанные кириллицей.
Попробуем усложнить задачу - сделаем массив внутри массива. Это вполне законно с точки зрения PHP. Попробуем сделать вложенный массив в примере выше. Он будет находиться под ключом 'info'. Запишем в него данные пользователя:
<?php
$a = array(
'login' => 'mouse',
'email' => 'mouse@mousedc.ru',
'password' => 'best_password',
'info' => array(
'name' => 'Mouse',
'color' => 'gray',
),
);
echo $a['login']; // результат: 'mouse'
echo $a['info']['name']; // результат: 'Mouse'
?>
Можно сделать массив с любым уровнем вложенности.
Строку в массив и обратно
Существуют функция explode, которая позволяет быстро создать массив из строки. Это довольно популярная функция, она часто используется в проектах. Приведём пример её использования:<?php
$a = 'Тише, мыши, кот на крыше';
$b = explode(', ', $a);
echo '<pre>';
print_r($b);
echo '</pre>';
?>
В первый параметр функции explode ставится разделитель, по которому строка будет разделена на элементы массива. Это может быть точка, запятая, пробел или любой другой символ, который есть в строке. Если разделитель не будет найден в строке, то будет возвращён массив с одним элементом, в котором будет вся строка. Если же разделитель встречается в строке, то она будет разделена на элементы массива. Результат из примера выше будет таким:
Array ( [0] => Тише [1] => мыши [2] => кот на крыше )Существует функция implode. По своей работе она противоположна explode и тоже часто используется в проектах. Эта функция объединяет элементы массива в строку. Первым параметром в этой функции ставится строка-соединитель, которая будет между элементами. Соединителем может быть любой символ, даже пробел и пустая строка (то есть без соединителя, все элементы будут слеплены):
<?php
$a = array('Тише,', 'мыши,', 'кот', 'на', 'крыше');
echo implode(' ', $a);
?>
Результат будет таким:
Тише, мыши, кот на крыше