Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Массивы

Массив хранит несколько значений под одним именем: список товаров, данные пользователя, строки таблицы. Это самая используемая структура данных в PHP.

Список

Простейший массив — список значений в квадратных скобках. У каждого элемента есть номер, или индекс, и счёт идёт с нуля:

<?php
 
$colors = ['красный', 'зелёный', 'синий'];
 
echo $colors[0]; // красный

Количество элементов

Функция count() возвращает количество элементов массива:

<?php
 
$colors = ['красный', 'зелёный', 'синий'];
 
echo count($colors); // 3

Индекс последнего элемента всегда на единицу меньше количества.

Добавление и изменение

Пустые квадратные скобки добавляют элемент в конец, а обращение по индексу заменяет существующий:

<?php
 
$colors = ['красный', 'зелёный', 'синий'];
 
$colors[] = 'жёлтый';
$colors[0] = 'белый';
 
echo implode(', ', $colors); // белый, зелёный, синий, жёлтый

Функция implode() склеивает элементы массива в строку через указанный разделитель.

Ассоциативный массив

Вместо номеров можно использовать свои ключи — обычно строки. Такой массив удобен для описания одного объекта:

<?php
 
$user = [
    'name' => 'Анна',
    'age' => 25,
];
 
echo $user['name']; // Анна

Перебор

foreach умеет отдавать не только значение, но и ключ:

<?php
 
$user = ['name' => 'Анна', 'age' => 25];
 
foreach ($user as $key => $value) {
    echo "$key: $value\n";
}

Полезные функции

<?php
 
$numbers = [3, 1, 2];
 
sort($numbers);
 
echo implode(', ', $numbers), "\n"; // 1, 2, 3
echo array_sum($numbers), "\n";     // 6
var_dump(in_array(2, $numbers));    // bool(true)

sort() упорядочивает сам массив, а не возвращает новый. in_array() проверяет, есть ли значение среди элементов.

Частая ошибка

Обращение к несуществующему ключу вызывает предупреждение Undefined array key. Если ключа может не быть, подставьте значение по умолчанию через ??:

<?php
 
$user = ['name' => 'Анна'];
 
echo $user['city'] ?? 'не указан'; // не указан

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.