Внимание! На этой странице вы найдете материал урока из архивного курса по PHP. Курс был написан в 2024 году одним из первых учеников Codebra и, к моменту написания курса, опытным бэкэнд-разработчиком. К сожалению, курс не был дописан, а его автор молча пропал.
Полный список уроков доступен по тегу Архивный курс по PHP и на странице первого урока.
Основы работы с массивами в PHP
- Массивы позволяют хранить множество данных разных типов, но могут вызывать утечки памяти и ошибки при работе с большими массивами.
- Функция
var_dumpиспользуется для вывода содержимого массива, аecho- для вывода простых типов данных. - Индексы массивов облегчают доступ к элементам, а функция
countпозволяет определить длину массива. - Обращение к элементам массива может осуществляться вручную по индексам или с помощью циклов.
- Для получения последнего или предпоследнего элемента массива можно использовать функцию
countс вычитанием единицы. - В PHP можно изменять значения элементов массива и использовать функции для удаления элементов.
Надеюсь, вы помните, что такое переменная? В переменную мы можем поместить только один тип данных. Такое ограничение не всегда нам на руку. Например, когда мы создаём блог и на главной странице выводим самые просматриваемые статьи, будет нерационально добавлять каждый пост в отдельную переменную и в дальнейшем их все выводить. Для решения этой задачи намного лучше подходят массивы. В массивы мы можем поместить очень много разных типов данных за один раз, но есть и минусы: при переборе огромных массивов вы столкнётесь с утечкой памяти и ошибками.
<?php
$arr = [1, 2, 3, 4, 5]; // Объявляем тип данных array
var_dump($arr); /* => array(5) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
}
*/
?>
Вы наверно сейчас думаете: «А что такое var_dump?». Функция var_dump (с функциями мы познакомимся далее). В PHP echo является языковой конструкцией, а не функцией, с её помощью мы можем вывести простой тип данных: integer, string, null. Массивы в PHP - это уже сложный тип данных, для которого есть специальные функции. Заметили, что при выводе у нас в квадратных скобках циферки? Называются они индексы. Они нужны для удобного обращения к элементам массива. Мы же должны забирать с массива элементы, а индексы нам в этом помогают. Посмотрите на строчку int(1). Слово int обозначает тип данных, а значение в скобках - данные, которые хранятся под этим индексом массива.
Что будет если мы выведем переменную $arr с помощью echo? Будет вот такое предупреждение интерпретатора PHP: Warning: Array to string conversion in /home/user/scripts/code.php on line 4 Array
Массив можно еще вывести функцией print_r, которая выводит информацию в удобочитаемом виде.
<?php
$arr = [1, 2, 3, 4, 5];
print_r($arr); /* =>
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
*/
// Удобно читать?
?>
В любом языке программирования индексы начинаются с нуля, а не единицы.
Длина массива
Массив может быть очень большим и, чтобы посчитать его длину, мы можем использовать функцию count.
<?php
$arr = [1, 2, 3, 4, 5];
// Распечатает кол-во
print_r(count($arr)); // => 5
?>
Функция count очень проста в использовании. Мы её вызываем, а она распечатывает длину самого массива (указанного в аргументах функции).
Обращение к элементам массива
Мы создаем массивы, чтобы потом использовать хранимую в них информацию. Это можно сделать циклами (изучим в следующей теме). А пока будем обращаться вручную по индексам:
<?php
$arr = [1, true, 2, 'Alex', 'Maxim'];
print_r($arr[0]); // => 1
print_r($arr[1]); // Распечатает 1. Я надеюсь вы помните почему вывелось 1?
?>
Но что делать если нам нужен последний или предпоследний элемент?
<?php
$arr = [1, true, 2, 'Alex', 'Maxim'];
print_r($arr[count($arr) - 1]); // => Maxim
print_r($arr[count($arr) - 2]); // => Alex
?>
Давайте разберемся, почему в квадратных скобках мы вызвали функцию count и еще отняли единицу. Функция count принимает массив, считает его элементы и возвращает целое число. Вместо count мы можем написать число 5 и отнять единицу, потому что индексы массива начинаются с нуля, и последний индекс будет равен четырем (5 - 1 = 4). В квадратных скобках мы можем использовать выражение, которое должно вернуть целочисленный тип данных. Думаю, с этим все понятно.
Напишем программу считающую сумму чисел в элементах массива.
<?php
$arr = [1, 2, 3, 4, 5];
print_r($arr[0] + $arr[1] + $arr[2] + $arr[3] + $arr[4]); // => 15
?>
Используем инкремент и декремент:
<?php
$arr = [1, 2, 3, 4];
$arr[0]++;
++$arr[1];
$arr[2]--;
--$arr[3];
print_r($arr); // => [2, 3, 2, 3]
?>
Изменение элементов массива в PHP
Давайте попробуем изменить значения элементов в массиве:
<?php
$arr = ['a', 'b', 'c', 'd'];
$arr[0] = '!'; // Изменяем первый элемент
$arr[1] = '!'; // Изменяем второй элемент
print_r($arr) // => ['!', '!', 'c', 'd']
?>
А теперь я покажу вам маленькую хитрость для разнообразия. Изменим нумерацию индексов не с нуля, а с единицы:
$arr = [1 => 'a', 'b', 'c', 'd'];
print_r($arr[1]); // => a
print_r($arr[2]); // => b
Хоть я вам и показал маленькую хитрость, в реальной работе так делать не стоит. Программисты фичу не оценят :)
Перезапись элементов массива
Можно также прочитать текущее значение, выполнить с ним определённые операции и записать обратно:
<?php
$arr = [1, 20, 2, 'I LOVE'];
// Используем сокращённые операторы
$arr[0] += 2;
$arr[1] /= 3;
$arr[2] **= 2;
$arr[3] .= ' PHP';
print_r($arr); // => [3, 6.6666666666667, 4, I LOVE PHP]
?>
Удаление элементов в массиве
Иногда нам приходится удалять элементы из исходного массива, для этого используется функция unset().
<?php
$arr = [1, 2, 3, 4, 5];
unset($arr[3]);
print_r($arr); // => [1, 2, 3, 5]
?>
Функция unset мутирует (изменяет) исходный массив. Будьте осторожны в применении.
Закончили с вами базовое изучение массивов. В следующем уроке обогатим наши знания ассоциативными массивами.
Не забываем решать задачи и двигаться только в перёд.
Задачи
- Создайте массив, содержащий названия месяцев года.
- Создайте массив с числами от 1 до 10. Перемножьте их.
- Создайте массив со словами "Мир", "Дружба", "Жвачка". С конкатенируйте строку чтобы получилось "Мир, Дружба, Жвачка!".
- Создайте массив, содержащий первые буквы алфавита.
- Создайте массив с числами от 10 до 20. Выведите результат сложения всех чисел.
- Создайте массив со словами "Да", "Нет", "Может быть" и создайте переменную
$a. Если в переменной$aсодержится "Да" и в массиве есть это значение, выведите текст: "Пойду в кино". Если содержится "Нет", выведите текст: "Пойду в кафе", иначе выведите текст: "Продолжу учиться на сайте Codebra". - Создайте массив из чисел, кратных трем.
- Создайте массив
$arr = ['PHP', 'JavaScript', 'HTML'], добавьте в конец каждому значения2024и выведите на экран.
Переходите к следующему уроку курса, а так же не забудьте посмотреть новый материал на Codebra по тегу PHP.
