W3docs

is_array()

Функция is_array() в PHP проверяет, является ли переменная массивом, и возвращает true или false.

Что такое is_array()?

is_array() — это встроенная функция PHP, которая проверяет, является ли переданная переменная массивом. Она возвращает true, если переменная является массивом, и false для любого другого типа (string, integer, object, null и так далее).

PHP является динамически типизированным языком, поэтому переменная может содержать значение любого типа во время выполнения. Прежде чем перебирать значение в цикле, обращаться к нему по индексу или передавать его в функцию для работы с массивами, например count() или array_map(), нередко стоит убедиться, что вы действительно работаете с массивом. Вызов функции для работы с массивами на не-массиве может вызвать TypeError (PHP 8+) или предупреждение, поэтому быстрая проверка с помощью is_array() делает ваш код безопаснее.

Синтаксис

is_array(mixed $value): bool

Функция принимает единственный параметр $value — переменную для проверки — и всегда возвращает boolean. Она никогда не генерирует собственных ошибок, поэтому её безопасно вызывать для любого значения, включая результаты функций, которые могут не быть заданы.

Базовый пример

php— editable, runs on the server

Здесь $list является массивом, поэтому is_array() возвращает true; $text — строка, поэтому функция возвращает false. Мы используем var_dump() вместо echo, потому что echo true выводит 1, а echo false выводит пустую строку — из-за этого boolean-значения сложно читать. var_dump() явно отображает тип и значение.

Что считается массивом

Как индексированные, так и ассоциативные массивы возвращают true, и пустой массив тоже. Всё, что лишь выглядит как коллекция — например, объект или ArrayObjectне считается нативным массивом.

<?php
var_dump(is_array([]));                 // bool(true)  — empty array
var_dump(is_array([1, 2, 3]));          // bool(true)  — indexed
var_dump(is_array(["name" => "Ann"]));  // bool(true)  — associative
var_dump(is_array([[1, 2], [3, 4]]));   // bool(true)  — multidimensional

var_dump(is_array("array"));            // bool(false) — string
var_dump(is_array(42));                 // bool(false) — integer
var_dump(is_array(null));               // bool(false) — null
var_dump(is_array(new stdClass()));     // bool(false) — object
?>

Практическое применение: защита перед итерацией

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

<?php
function printAll(mixed $input): void
{
    // Wrap a single value in an array so the loop always works.
    if (!is_array($input)) {
        $input = [$input];
    }

    foreach ($input as $item) {
        echo $item, "\n";
    }
}

printAll("just one");        // just one
printAll(["a", "b", "c"]);   // a / b / c on separate lines
?>

Это позволяет избежать предупреждения foreach при скалярном значении $input и упрощает вызывающий код.

is_array() в сравнении с аналогичными проверками

  • is_array() vs. gettype(): gettype() возвращает строку, например "array"; is_array() напрямую возвращает boolean, что лучше читается в условии if.
  • is_array() vs. is_iterable(): если вам нужно только знать, можно ли перебирать значение через foreach, is_iterable() даёт более широкий охват — она принимает как массивы, так и объекты Traversable (например, генераторы).
  • is_array() vs. is_countable(): используйте is_countable() перед вызовом count(), чтобы также принимать объекты, реализующие интерфейс Countable.
  • Для других проверок скалярных типов см. is_string() и is_int().

Итоги

Используйте is_array(), когда вам нужна быстрая и безошибочная проверка того, что значение является настоящим массивом PHP — чаще всего как защита перед циклом или перед вызовом функции, работающей только с массивами. Если вам также нужно допускать итерируемые объекты, используйте is_iterable() или is_countable().

Практика

Практика
Что делает функция 'is_array' в PHP?
Что делает функция 'is_array' в PHP?
Was this page helpful?