0 знаков
9. Массивы в 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. Создайте массив, содержащий названия месяцев года.
2. Создайте массив с числами от 1 до 10. Перемножьте их.
3. Создайте массив со словами "Мир", "Дружба", "Жвачка". С конкатенируйте строку чтобы получилось "Мир, Дружба, Жвачка!".
4. Создайте массив, содержащий первые буквы алфавита.
5. Создайте массив с числами от 10 до 20. Выведите результат сложения всех чисел.
6. Создайте массив со словами "Да", "Нет", "Может быть" и создайте переменную $a
. Если в переменной $a
содержится "Да" и в массиве есть это значение, выведите текст: "Пойду в кино
". Если содержится "Нет", выведите текст: "Пойду в кафе
", иначе выведите текст: "Продолжу учиться на сайте Codebra
".
7. Создайте массив из чисел, кратных трем.
8. Создайте массив $arr = ['PHP', 'JavaScript', 'HTML']
, добавьте в конец каждому значения 2024
и выведите на экран.
Похожие уроки Codebra
Подписывайся на наш Telegram-канал!
Новости, полезный материал,
программирование и ИБ
Подписывайся на наш Telegram-канал!
Новости, полезный материал,
программирование и ИБ