Ответ
В PHP массив (array) — это встроенный составной тип данных, который может выступать как упорядоченный список (с числовыми индексами), так и как карта (словарь) с ключами-строками.
Ключевые особенности:
- Гибкость: Может содержать элементы любых типов, включая другие массивы.
- Динамический размер: Не требует предварительного объявления размера.
- Тип ключей: Ключами могут быть целые числа (
int) или строки (string). При использовании других типов происходит приведение. - Проверка типа: Функция
gettype($array)вернет"array". Для строгой проверки используетсяis_array().
Примеры:
// Индексированный массив
$list = [1, 2, 3]; // array(3) { [0]=> int(1) ... }
// Ассоциативный массив (карта)
$map = ['name' => 'Alice', 'age' => 30];
// Массив с разными типами
$mixed = [42, 'text', true, ['nested']];
var_dump(is_array($list)); // bool(true)
var_dump(gettype($map)); // string(5) "array"
С PHP 8.0 для аннотаций типов также широко используется тип iterable, который включает array и объекты, реализующие интерфейс Traversable.
Ответ 18+ 🔞
Ну, вот смотри, как оно на самом деле. PHP-массив — это такая хитрая жопа, которая умеет быть всем, чем захочет. То ли это простой список по порядку, то ли словарь, где ключ — строка какая-нибудь. Универсальная штука, ёпта.
Что там у него внутри:
- Гибкость овердохуища: Можешь пихать туда что угодно — числа, строки, булевы значения, а можешь и другой массив воткнуть, и получится массив в массиве, как матрёшка, блядь.
- Размер динамический: Не надо заранее голову ломать, сколько там ячеек резервировать. Хочешь — добавь, хочешь — убери. Живёт своей жизнью.
- Ключи — это отдельная история: Ключом может быть либо целое число, либо строка. А если попробуешь какой-нибудь другой тип — он его приведёт, и потом сам от себя охуеешь, когда поймёшь, что там в итоге оказалось.
- Как проверить, что это массив? Ну,
gettype($array)тебе радостно крикнет"array". Но если ты параноик и хочешь строгую проверку — юзайis_array(), и спи спокойно.
Ну, и примеры, чтобы совсем понятно стало:
// Простой список, как в магазине
$list = [1, 2, 3]; // array(3) { [0]=> int(1) ... }
// Ассоциативный массив, он же словарь. Типа, имя -> значение.
$map = ['name' => 'Alice', 'age' => 30];
// А тут у нас бардак полный, все типы в кучу
$mixed = [42, 'text', true, ['nested']];
var_dump(is_array($list)); // bool(true)
var_dump(gettype($map)); // string(5) "array"
И да, чувак, с PHP 8.0 все умные дяди в аннотациях типов часто пишут iterable. Это такой общий термин, который покрывает и обычные массивы, и объекты, которые умеют перебираться (те, что Traversable реализуют). Чтобы голова не болела.