Метод has
Метод has применяется к массиву или коллекции
и проверяет существование указанного ключа или набора ключей.
В качестве аргумента передаётся ключ или массив ключей,
которые необходимо проверить. Метод возвращает true,
если все указанные ключи существуют, и false в противном случае.
Для проверки вложенных ключей используется "точечная" нотация.
Синтаксис
<?php
use Illuminate\Support\Collection;
use Illuminate\Support\Arr;
// Для коллекции
$collection->has($key);
// Для массива через класс Arr
Arr::has($array, $key);
?>
Пример
Давайте проверим наличие ключа 'status' в массиве данных пользователя:
<?php
use Illuminate\Support\Arr;
$user = [
'id' => 1,
'name' => 'John Doe',
'status' => 'active'
];
$res = Arr::has($user, 'status');
echo $res;
?>
Результат выполнения кода:
true
Пример
Проверим наличие ключа 'email', которого нет в массиве:
<?php
use Illuminate\Support\Arr;
$user = [
'id' => 1,
'name' => 'John Doe'
];
$res = Arr::has($user, 'email');
echo $res;
?>
Результат выполнения кода:
false
Пример
Проверим сразу несколько ключей в массиве данных товара:
<?php
use Illuminate\Support\Arr;
$product = [
'id' => 5,
'title' => 'Laptop',
'price' => 999,
'category' => 'electronics'
];
$res = Arr::has($product, ['id', 'price', 'category']);
echo $res;
?>
Результат выполнения кода:
true
Пример
Если хотя бы одного ключа из списка нет, метод возвращает false:
<?php
use Illuminate\Support\Arr;
$product = [
'id' => 5,
'title' => 'Laptop',
'price' => 999
];
$res = Arr::has($product, ['id', 'price', 'discount']);
echo $res;
?>
Результат выполнения кода:
false
Пример
Проверим существование вложенного ключа с использованием "точечной" нотации:
<?php
use Illuminate\Support\Arr;
$data = [
'user' => [
'profile' => [
'age' => 25,
'city' => 'New York'
]
]
];
$res = Arr::has($data, 'user.profile.city');
echo $res;
?>
Результат выполнения кода:
true
Пример
Используем метод has с коллекцией Eloquent:
<?php
use App\Models\User;
use Illuminate\Support\Collection;
$users = User::all();
// Проверяем наличие ключа 'email' в коллекции
$res = $users->has('email');
echo $res;
?>
Результат выполнения кода:
true