Проверка принадлежности переменной к массиву

Раздел: PHP -> Массивы

Основные методы проверки переменной на массив

Как проверить, что переменная является массивом без учёта объектов?

Наиболее надёжный и быстрый способ - функция is_array(). Она возвращает true только для переменных типа array, игнорируя объекты, даже реализующие интерфейс ArrayAccess или Traversable.

$var = [1, 2, 3];
if (is_array($var)) {
    echo 'Это массив';
} else {
    echo 'Не массив';
}

Php ключи массива (получение ключей массива в php)

Это массив

Php массивы индексы (получение индексов массива в php)

Типичная ошибка: путать is_array() с is_countable() или is_iterable(). Если требуется строгая проверка именно на массив (а не на итерируемый объект), используйте только is_array().

Проблема: is_array() возвращает false для объекта ArrayObject, хотя его можно использовать как массив. Решение: дополнительно проверить тип через instanceof ArrayObject или использовать is_countable() с дополнительными условиями.

Как определить тип переменной и сравнить строку 'array'?

Функция gettype() возвращает строковое представление типа. Сравнение с 'array' даёт тот же результат, что и is_array(), но менее производительно и менее читаемо.

$var = ['a' => 1];
if (gettype($var) === 'array') {
    echo 'Это массив';
}

массив данных php (работа с массивом данных в php)

Это массив

массив ли php (проверка, является ли переменная массивом в php)

Ошибка: использование gettype() с нестрогим сравнением (==) может привести к ложным срабатываниям, если тип не совпадает точно. Всегда используйте ===.

Как проверить, поддерживает ли переменная подсчёт элементов, включая массивы?

Функция is_countable() (PHP 7.3+) возвращает true для массивов и объектов, реализующих Countable. Если нужно только массивы, комбинируют с is_array().

$var = ['x', 'y'];
if (is_countable($var) && is_array($var)) {
    echo 'Это массив и он поддаётся подсчёту';
}

Php разбить массив (разбиение массива на части в php)

Это массив и он поддаётся подсчёту

Php переменные массив (создание массива из переменных в php)

Ловушка: is_countable() вернёт true для объекта класса, реализующего Countable, что может быть не ожидаемо, если ожидается строго массив.

Как проверить, что переменная является массивом или итерируемым объектом?

Функция is_iterable() (PHP 7.1+) возвращает true для массивов и объектов, реализующих Traversable. Полезна при написании универсальных функций, работающих с foreach.

$var = new ArrayObject([1, 2]);
if (is_iterable($var)) {
    echo 'Переменная пригодна для перебора';
}

Php сортировка массива (сортировка массива в php)

Переменная пригодна для перебора

ассоциативный массив php (ассоциативные массивы в php)

Особенность: is_iterable() не отличает массивы от объектов. Если нужна строгая проверка на массив, используйте is_array().

Как использовать проверку через оператор instanceof для интерфейсов?

Оператор instanceof не применим к массивам (массив не является объектом). Однако можно проверить, является ли переменная объектом, реализующим Traversable или ArrayAccess, и затем отдельно обработать массивы.

$var = [1, 2];
if (is_array($var) || $var instanceof Traversable) {
    echo 'Данные можно перебрать';
}

Php удалить массива (удаление всего массива в php)

Данные можно перебрать

функции массива php (функции для работы с массивами в php)

Ошибка попытка применить instanceof к массиву напрямую ($var instanceof array) приведёт к фатальной ошибке, так как array - не класс.

Как проверить тип аргумента функции на массив с помощью type hinting?

Объявление параметра с типом array принудительно проверяет, что переданное значение является массивом. При несовпадении выбрасывается TypeError.

function processArray(array $data) {
    echo 'Получен массив из ' . count($data) . ' элементов';
}
processArray(['a', 'b']);
// processArray('строка'); // TypeError

Этот способ подходит для строгой типизации в объявлениях функций, но не для произвольной проверки в коде.

Ограничение: type hinting работает только в момент вызова функции; его нельзя применить для проверки переменной, не переданной в функцию.

- Php массив в строку (преобразование массива в строку php)
- Php key (ключи и массивы в php)

Расширенные примеры проверки массива в PHP

Пример 1. Проверка в цикле с обработкой элементов:

Пример
$data = [
    'users' => ['Alice', 'Bob'],
    'config' => ['debug' => true],
    'string' => 'hello',
    'number' => 42
];
foreach ($data as $key => $value) {
    if (is_array($value)) {
        echo "Ключ '$key' содержит массив с " . count($value) . " элем.
";
    } else {
        echo "Ключ '$key' не массив.
";
    }
}
Ключ 'users' содержит массив с 2 элем.
Ключ 'config' содержит массив с 1 элем.
Ключ 'string' не массив.
Ключ 'number' не массив.

Пример 2. Рекурсивная проверка многомерного массива:

Пример
$nested = [
    'level1' => [
        'level2' => [
            'value' => 100
        ]
    ]
];

function isAllArrays(array $arr): bool {
    foreach ($arr as $item) {
        if (is_array($item) && !isAllArrays($item)) {
            return false;
        }
    }
    return true;
}

echo isAllArrays($nested) ? 'Все элементы - массивы' : 'Найден не массив';
Все элементы - массивы

Пример 3. Использование is_array с array_filter для удаления не массивов:

Пример
$mixed = [
    [1, 2],
    'text',
    ['a' => 'b'],
    null,
    [0 => 'zero']
];
$onlyArrays = array_filter($mixed, 'is_array');
print_r($onlyArrays);
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
        )
    [2] => Array
        (
            [a] => b
        )
    [4] => Array
        (
            [0] => zero
        )
)

Пример 4. Комбинация is_array и array_map для безопасной обработки:

Пример
$input = [
    ['apple', 'banana'],
    'invalid',
    ['grape']
];
$result = array_map(function($item) {
    return is_array($item) ? implode(', ', $item) : $item;
}, $input);
print_r($result);
Array
(
    [0] => apple, banana
    [1] => invalid
    [2] => grape
)

Пример 5. Проверка пустого массива:

Пример
$emptyArr = [];
if (is_array($emptyArr) && count($emptyArr) === 0) {
    echo 'Пустой массив';
} else {
    echo 'Не пустой массив или не массив';
}
Пустой массив

Пример 6. Проверка переменной, полученной из внешнего источника (например, JSON):

Пример
$json = '[{"id":1}, {"id":2}]';
$decoded = json_decode($json, true);

if (is_array($decoded)) {
    echo 'JSON декодирован в массив, элементов: ' . count($decoded);
} else {
    echo 'Ошибка: JSON не является массивом';
}
JSON декодирован в массив, элементов: 2

Пример 7. Использование try/catch с type hinting:

Пример
function expectArray(array $arr) { }
try {
    expectArray('string');
} catch (TypeError $e) {
    echo 'Ошибка: ' . $e->getMessage();
}
Ошибка: expectArray(): Argument #1 ($arr) must be of type array, string given, called in ...

Проверка, является ли переменная массивом в PHP - comments

En
массив ли php (php)