Метод isAssoc
Метод isAssoc класса Arr определяет, является ли переданный массив ассоциативным. Метод возвращает true, если массив имеет хотя бы один строковый ключ. Если все ключи массива являются числовыми и идут по порядку от нуля, метод возвращает false.
Особенность метода isAssoc заключается в том, что он проверяет именно наличие строковых ключей. Массив считается ассоциативным, если у него есть хотя бы один ключ, который не является целым числом. Даже если в массиве присутствуют числовые ключи, но есть хотя бы один строковый, метод вернёт true.
Синтаксис
<?php
Arr::isAssoc($array);
?>
Метод принимает один параметр:
-
$array- массив для проверки
Возвращаемое значение:
-
true- массив является ассоциативным -
false- массив является индексным
Пример
Проверим обычный индексный массив:
<?php
use Illuminate\Support\Arr;
$arr = ['a', 'b', 'c', 'd', 'e'];
$res = Arr::isAssoc($arr);
var_dump($res);
?>
Результат выполнения кода:
bool(false)
Метод вернул false, так как все ключи массива являются числовыми и идут по порядку от нуля.
Пример
Проверим ассоциативный массив:
<?php
use Illuminate\Support\Arr;
$arr = ['name' => 'John', 'age' => 30, 'city' => 'New York'];
$res = Arr::isAssoc($arr);
var_dump($res);
?>
Результат выполнения кода:
bool(true)
Метод вернул true, так как в массиве присутствуют строковые ключи.
Пример
Проверим массив со смешанными ключами:
<?php
use Illuminate\Support\Arr;
$arr = ['a', 'b', 'c', 'foo' => 'bar', 'd'];
$res = Arr::isAssoc($arr);
var_dump($res);
?>
Результат выполнения кода:
bool(true)
Метод вернул true, потому что массив содержит строковый ключ 'foo', даже несмотря на наличие числовых ключей.
Пример
Проверим массив с числовыми ключами, которые не начинаются с нуля:
<?php
use Illuminate\Support\Arr;
$arr = [1 => 'a', 2 => 'b', 3 => 'c'];
$res = Arr::isAssoc($arr);
var_dump($res);
?>
Результат выполнения кода:
bool(false)
Метод вернул false, так как все ключи являются числовыми, несмотря на то, что они не начинаются с нуля. Важно отметить, что метод isAssoc проверяет именно наличие строковых ключей, а не непрерывность или начало отсчёта числовых ключей.
Пример
Проверим массив с ключами, содержащими числовые строки:
<?php
use Illuminate\Support\Arr;
$arr = ['1' => 'a', '2' => 'b', '3' => 'c'];
$res = Arr::isAssoc($arr);
var_dump($res);
?>
Результат выполнения кода:
bool(false)
Несмотря на то, что ключи записаны как строки, PHP преобразует их в целые числа, поэтому метод возвращает false.