
Массив в PHP представляет собой упорядоченную структуру данных, которая может хранить любое количество элементов: строки, числа, объекты и даже другие массивы. Работа с массивами является основой большинства скриптов – от обработки форм до генерации динамического контента.
В языке PHP массивы бывают трёх типов: индексированные, ассоциативные и многомерные. Каждый из них используется для решения разных задач. Например, индексированный массив упрощает хранение последовательностей чисел или строк, а ассоциативный – удобен для работы с парами ключ–значение.
Для создания массива применяются функции array() и оператор []. Первый вариант более универсален и подходит для старых версий PHP, второй – компактнее и используется чаще в современных проектах. Важно учитывать синтаксис и версию PHP, чтобы избежать ошибок совместимости.
Дальнейшие примеры кода помогут понять различия между типами массивов и выбрать оптимальный способ их объявления для конкретной задачи.
Создание простого числового массива через array()

Функция array() позволяет задать последовательность чисел в явном виде. Например:
$numbers = array(10, 20, 30, 40, 50);
Элементы индексируются автоматически, начиная с 0. В приведённом примере $numbers[0] равно 10, а $numbers[4] – 50.
Если требуется изменить порядок индексации, можно задать ключи вручную:
$numbers = array(
1 => 100,
2 => 200,
3 => 300
);
В этом случае массив начинается с индекса 1, и вызов $numbers[2] вернёт 200.
При работе с массивом удобно использовать count() для получения длины:
for ($i = 0; $i < count($numbers); $i++) {
echo $numbers[$i] . "<br>";
}
Использование короткого синтаксиса [] для массива
Начиная с PHP 5.4 вместо функции array() можно использовать квадратные скобки []. Такой синтаксис упрощает запись и делает код компактнее.
Пример индексированного массива:
$numbers = [10, 20, 30];
echo $numbers[1]; // 20
Пример ассоциативного массива:
$user = [
"name" => "Иван",
"age" => 25
];
echo $user["name"]; // Иван
Короткий синтаксис часто применяют в многомерных массивах:
$matrix = [
[1, 2],
[3, 4]
];
echo $matrix[1][0]; // 3
Рекомендуется использовать [] во всех новых проектах, так как это современный стандарт и он удобнее для чтения.
Формирование ассоциативного массива с ключами
Ассоциативный массив в PHP создаётся с помощью оператора =>, который связывает ключ и значение. Ключом может быть строка или число, при этом строковые ключи часто применяются для хранения структурированных данных.
Пример объявления массива с текстовыми ключами:
101,
"name" => "Иван",
"email" => "ivan@example.com"
];
?>
Для добавления нового элемента достаточно указать новый ключ:
Если ключ уже существует, его значение будет перезаписано:
Ассоциативный массив позволяет обращаться к данным напрямую по ключу, что упрощает работу с конфигурациями, пользовательскими профилями и любыми наборами параметров.
Объявление многомерного массива
Пример объявления двумерного массива:
Обращение к элементам осуществляется по индексу строки и столбца:
Ассоциативные многомерные массивы позволяют задавать ключи на каждом уровне:
["name" => "Иван", "age" => 28],
"user2" => ["name" => "Анна", "age" => 24],
"user3" => ["name" => "Олег", "age" => 31]
];
?>
Рекомендации при работе с многомерными массивами:
- Используйте ассоциативные ключи для улучшения читаемости.
- Избегайте чрезмерной вложенности, чтобы не усложнять обработку данных.
- Для обхода применяйте вложенные циклы
foreach.
Пример обхода массива пользователей:
$info) {
echo $id . ": " . $info["name"] . ", " . $info["age"] . " лет\n";
}
?>
Добавление новых элементов в массив

В PHP новый элемент можно добавить с помощью оператора []. Если индекс не указан, он назначается автоматически:
Чтобы задать индекс вручную, используется форма $array[ключ] = значение:
Функция array_push() добавляет сразу несколько значений в конец массива:
Для объединения массивов используют оператор + или функцию array_merge():
1];
$b = ["y" => 2, "z" => 3];
$result = $a + $b;
print_r($result);
$merged = array_merge($a, $b);
print_r($merged);
?>
Изменение значений по ключу или индексу
В PHP элементы массива можно изменять напрямую, обращаясь к ним по ключу (для ассоциативных массивов) или индексу (для числовых массивов). Это позволяет обновлять данные без создания нового массива.
Пример для числового массива:
$numbers = [10, 20, 30];
$numbers[1] = 25; // изменяем значение второго элемента
print_r($numbers);
Результат:
Array
(
[0] => 10
[1] => 25
[2] => 30
)
Пример для ассоциативного массива:
$user = [
"name" => "Иван",
"age" => 30
];
$user["age"] = 31; // обновляем возраст
print_r($user);
Результат:
Array
(
[name] => Иван
[age] => 31
)
Изменение можно комбинировать с условной проверкой существования ключа, чтобы избежать ошибок:
if (array_key_exists("city", $user)) {
$user["city"] = "Москва";
} else {
$user["city"] = "Не указан";
}
Ниже таблица демонстрирует основные операции изменения элементов:
| Тип массива | Пример изменения | Описание |
|---|---|---|
| Числовой | $arr[2] = 50; | Изменение значения третьего элемента |
| Ассоциативный | $arr[«key»] = «новое значение»; | Обновление значения по конкретному ключу |
| С проверкой существования ключа | if(array_key_exists(«key»,$arr)) $arr[«key»]=»value»; | Безопасное обновление значения, избегая ошибки undefined index |
При работе с вложенными массивами доступ к элементу осуществляется через последовательность ключей или индексов:
["apple" => 50, "orange" => 30]];
$data["products"]["apple"] = 60; // обновляем цену яблока
print_r($data);
Удаление элементов с помощью unset()
Функция unset() позволяет удалить один или несколько элементов массива по ключу или индексу. После вызова unset() элемент полностью удаляется, и доступ к нему будет невозможен.
Синтаксис:
unset($array['ключ']);
Примеры использования:
- Удаление одного элемента по ключу:
- Удаление нескольких элементов одновременно:
- Удаление элемента вложенного массива:
- Удаление всех элементов массива:
$fruits = ['apple', 'banana', 'orange'];
unset($fruits[1]); // удаляет 'banana'
print_r($fruits); // результат: [0 => 'apple', 2 => 'orange']
$data = ['a' => 10, 'b' => 20, 'c' => 30];
unset($data['a'], $data['c']);
print_r($data); // результат: ['b' => 20]
$matrix = [
'row1' => [1, 2, 3],
'row2' => [4, 5, 6]
];
unset($matrix['row2'][1]); // удаляет элемент со значением 5
print_r($matrix);
$array = [1, 2, 3, 4];
foreach ($array as $key => $value) {
unset($array[$key]);
}
print_r($array); // результат: []
Рекомендации по использованию:
- После удаления индексы массива не пересчитываются автоматически. Для создания последовательных индексов используйте
array_values(). - Для больших массивов избегайте многократного вызова
unset()в цикле без необходимости, чтобы снизить нагрузку на память. - Не используйте
unset()внутри функций, если массив передан по значению и требуется сохранить исходный массив.
Обход массива с помощью foreach

Цикл foreach предназначен для последовательного обхода элементов массива без необходимости управлять счетчиком. Он автоматически извлекает значения или пары ключ-значение.
Простейший пример обхода массива по значениям:
<?php
$fruits = ["яблоко", "банан", "вишня"];
foreach ($fruits as $fruit) {
echo $fruit . "
";
}
?>
Если требуется получить ключи и значения одновременно, синтаксис выглядит так:
<?php
$prices = ["яблоко" => 50, "банан" => 30, "вишня" => 70];
foreach ($prices as $fruit => $price) {
echo "$fruit стоит $price рублей.
";
}
?>
Для изменения значений массива внутри цикла необходимо использовать ссылку &:
<?php
$numbers = [1, 2, 3];
foreach ($numbers as &$number) {
$number *= 2;
}
print_r($numbers);
?>
Важно помнить, что ссылка сохраняет привязку к последнему элементу после завершения цикла, поэтому её нужно обнулять:
unset($number);
Цикл foreach эффективен для массивов любой длины и структуры, включая многомерные. Для вложенных массивов можно использовать рекурсивный обход или вложенные циклы.
Пример вложенного массива:
<?php
$matrix = [
[1, 2],
[3, 4]
];
foreach ($matrix as $row) {
foreach ($row as $value) {
echo $value . " ";
}
echo "
";
}
?>
Вопрос-ответ:
Как создать простой массив с числами в PHP?
В PHP можно создать массив с числами с помощью функции array() или короткого синтаксиса []. Например, $numbers = array(1, 2, 3, 4); или $numbers = [1, 2, 3, 4];. Каждый элемент массива получает индекс, начиная с 0. Чтобы вывести значение, используют $numbers[0], $numbers[1] и так далее.
В чем разница между индексированными и ассоциативными массивами?
Индексированные массивы используют числовые ключи, автоматически присваиваемые элементам. Ассоциативные массивы позволяют задавать собственные ключи, которые могут быть строками. Например: $arr = [‘a’ => 1, ‘b’ => 2]; — здесь ‘a’ и ‘b’ являются ключами. Ассоциативные массивы удобны для хранения данных с понятными идентификаторами.
Как добавить новый элемент в существующий массив?
Для добавления элемента в конец массива можно использовать оператор []. Например, $arr[] = 5; добавит число 5 в конец массива $arr. Также можно использовать функцию array_push($arr, 5), которая делает то же самое. Для ассоциативных массивов можно присвоить значение по ключу: $arr[‘new’] = 10;.
Можно ли создать многомерный массив в PHP?
Да, в PHP поддерживаются многомерные массивы, то есть массивы, содержащие другие массивы. Пример: $matrix = [[1, 2], [3, 4]]; — это двумерный массив. Доступ к элементам осуществляется через несколько индексов: $matrix[0][1] вернет 2. Многомерные массивы удобны для хранения таблиц или структурированных данных.
Как перебрать все элементы массива с помощью цикла?
Чтобы пройтись по массиву, чаще всего используют цикл foreach. Пример: foreach ($arr as $value) { echo $value; } — такой цикл выведет все значения массива. Для ассоциативного массива можно получить и ключи: foreach ($arr as $key => $value) { echo «$key => $value»; }. Этот способ позволяет работать с каждым элементом отдельно.
Какие существуют способы создания массива в PHP и чем они отличаются?
В PHP массивы можно создавать несколькими способами. Наиболее распространённый — использовать квадратные скобки: $arr = [1, 2, 3];. Такой синтаксис появился в PHP 5.4 и позволяет легко объявлять массив с элементами. Ещё один способ — использовать функцию array(): $arr = array(1, 2, 3);. Она работает во всех версиях PHP и позволяет создавать как обычные числовые массивы, так и ассоциативные, где ключи задаются явно: $arr = ['a' => 1, 'b' => 2];. Отличие этих методов в основном синтаксическое, функциональных различий между ними нет, но скобки считаются более современным и читаемым вариантом.
Можно ли создавать массивы с разными типами данных в PHP и как к ним обращаться?
Да, PHP позволяет создавать массивы, которые содержат элементы разных типов: числа, строки, объекты, булевы значения и даже другие массивы. Например, $arr = [42, "текст", true, [1, 2, 3]];. Чтобы обратиться к элементу, используют его индекс или ключ. Для числового массива обращение выглядит так: $arr[0] вернёт 42, а для вложенного массива — $arr[3][1], что даст 2. Для ассоциативного массива ключи — это строки: $arr = ['имя' => 'Иван', 'возраст' => 30]; echo $arr['имя']; выведет Иван. Такой подход позволяет гибко хранить и получать данные разных типов в одном массиве.
