Is array: примеры (PHP)

Использование функции is_array для проверки типа в PHP
Раздел: Работа с переменными
is_array(mixed $value): bool
Функция is_array в PHP

Функция is_array() в языке программирования PHP применяется для проверки типа переменной. Ее основное назначение – определение, является ли переданное значение массивом.

Назначение и сценарии использования

Функция используется в ситуациях, когда логика программы зависит от типа данных. Типичные случаи: проверка входных параметров функции, валидация данных, полученных из внешних источников (например, JSON, формы, базы данных), перед выполнением операций, специфичных для массивов (например, итерация с помощью foreach).

Синтаксис и параметры
bool is_array(mixed $value)

Функция принимает один обязательный аргумент:

  • $value (mixed) – проверяемое значение любого типа.

Возвращаемое значение: true, если $value является массивом, и false в противном случае.

Простые примеры использования

Базовые варианты проверки различных типов данных.

Проверка массива
$arr = [1, 2, 3];
var_dump(is_array($arr));
bool(true)
Проверка других типов
$types = [
    'строка' => 'Hello',
    'число' => 42,
    'NULL' => null,
    'объект' => new stdClass(),
    'логический' => true
];

foreach ($types as $type => $value) {
    echo $type . ': ' . (is_array($value) ? 'массив' : 'не массив') . "
"; }
строка: не массив
число: не массив
NULL: не массив
объект: не массив
логический: не массив
Похожие функции в PHP

В PHP существует семейство функций is_* для проверки типов, а также другие способы определения типа переменной.

  • gettype($value) – возвращает строку с названием типа. Сравнение результата с 'array' менее эффективно, чем прямая проверка is_array().
  • is_iterable($value) (PHP 7.1+) – проверяет, является ли переменная итерируемой (массив или объект, реализующий интерфейс Traversable). Полезно для проверки перед использованием в foreach.
  • is_object($value) – проверяет, является ли значение объектом. Используется для различения массивов и объектов.
  • instanceof – оператор для проверки класса объекта. Не применим для массивов.

Функция is_array() предпочтительна, когда требуется строгая проверка именно на тип «массив». Для проверки возможности итерации лучше использовать is_iterable().

Частые ошибки
Проверка несуществующей переменной

Попытка проверить необъявленную переменную вызовет ошибку уровня E_WARNING.

// var_dump(is_array($undefinedVar)); // Вызовет предупреждение
// Правильный подход:
if (isset($undefinedVar) && is_array($undefinedVar)) {
    // Действия с массивом
}
Путаница с empty() и isset()

Функции empty() и isset() проверяют наличие и значение, а не тип. Пустой массив [] для is_array() является массивом (true), а для empty() – пустым значением (true).

$arr = [];
var_dump(is_array($arr)); // bool(true)
var_dump(empty($arr)); // bool(true)
var_dump(isset($arr)); // bool(true)
Изменения в версиях PHP

Функция is_array() является одной из старейших в PHP и ведет себя стабильно. В PHP 8 не было внесено существенных изменений в ее работу. Однако в целом PHP 8 уделяет больше внимания строгой типизации, что повышает важность использования функций проверки типа.

Расширенные примеры
Рекурсивная проверка многомерного массива
function is_multi_array(array $array): bool {
    foreach ($array as $value) {
        if (is_array($value)) {
            return true;
        }
    }
    return false;
}

$simple = [1, 2, 3];
$multi = [ [1, 2], [3, 4] ];

var_dump(is_multi_array($simple)); // false
var_dump(is_multi_array($multi)); // true
Валидация параметров функции
function processUsers($users) {
    if (!is_array($users) && !($users instanceof Traversable)) {
        throw new InvalidArgumentException('Ожидается массив или итерируемый объект');
    }
    foreach ($users as $user) {
        // Обработка
    }
}

processUsers(['Alice', 'Bob']); // OK
// processUsers('Alice'); // Выбросит исключение
Фильтрация списка по типу
$mixedList = [1, 'text', [2, 4], null, ['a' => 'b']];
$onlyArrays = array_filter($mixedList, 'is_array');
print_r($onlyArrays);
Array
(
    [2] => Array
        (
            [0] => 2
            [1] => 4
        )
    [4] => Array
        (
            [a] => b
        )
)
Различия между array, ArrayObject и stdClass
$array = [1, 2];
$arrayObject = new ArrayObject([1, 2]);
$stdObject = (object) [1, 2];

var_dump(is_array($array)); // true
var_dump(is_array($arrayObject)); // false
var_dump(is_array($stdObject)); // false
var_dump(is_iterable($arrayObject)); // true
Аналоги в других языках

Is array в Python

В Python используется функция isinstance() или проверка через type().

value = [1, 2, 3]
print(isinstance(value, list))
print(type(value) == list)
True
True

Is array в Javascript

В JavaScript для проверки массивов рекомендуется использовать метод Array.isArray(), так как оператор typeof для массива возвращает 'object'.

let arr = [1, 2, 3];
console.log(Array.isArray(arr)); // true
console.log(typeof arr); // 'object'
true
object

Is array в MySQL

В SQL понятия массива как типа данных обычно нет. Однако в некоторых СУБД (например, PostgreSQL) есть тип массива, а проверка осуществляется через предикат IS NOT NULL или функции для работы с массивами.

PHP is_array function comments

En
Is array Finds whether a variable is an array