Is array: примеры (PHP)
is_array(mixed $value): boolФункция 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 существует семейство функций 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() проверяют наличие и значение, а не тип. Пустой массив [] для 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)Функция 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)); // truefunction 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 = [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)); // trueIs array в Python
В Python используется функция isinstance() или проверка через type().
value = [1, 2, 3]
print(isinstance(value, list))
print(type(value) == list)True
TrueIs array в Javascript
В JavaScript для проверки массивов рекомендуется использовать метод Array.isArray(), так как оператор typeof для массива возвращает 'object'.
let arr = [1, 2, 3];
console.log(Array.isArray(arr)); // true
console.log(typeof arr); // 'object'true
objectIs array в MySQL
В SQL понятия массива как типа данных обычно нет. Однако в некоторых СУБД (например, PostgreSQL) есть тип массива, а проверка осуществляется через предикат IS NOT NULL или функции для работы с массивами.