Метод only
Метод only класса Arr используется для фильтрации ассоциативного массива. Он возвращает новый массив, который содержит только пары ключ-значение, соответствующие переданному списку ключей. Первым параметром метод принимает исходный массив, вторым - массив ключей, которые нужно оставить.
Синтаксис
<?php
Arr::only($array, $keys);
?>
Пример
Давайте извлечем из массива только ключи 'name' и 'email':
<?php
use Illuminate\Support\Arr;
$user = [
'name' => 'John',
'email' => 'john@example.com',
'age' => 30,
'city' => 'New York'
];
$res = Arr::only($user, ['name', 'email']);
print_r($res);
?>
Результат выполнения кода:
[
"name" => "John",
"email" => "john@example.com"
]
Пример
Метод игнорирует ключи, которых нет в исходном массиве:
<?php
use Illuminate\Support\Arr;
$data = [
'id' => 1,
'title' => 'Article',
'content' => 'Text'
];
$res = Arr::only($data, ['id', 'title', 'non_existent_key']);
print_r($res);
?>
Результат выполнения кода:
[
"id" => 1,
"title" => "Article"
]
Пример
Если передать один ключ в виде строки, метод все равно вернет массив:
<?php
use Illuminate\Support\Arr;
$product = [
'id' => 100,
'name' => 'Laptop',
'price' => 999.99
];
$res = Arr::only($product, ['name']);
print_r($res);
?>
Результат выполнения кода:
[
"name" => "Laptop"
]
Пример
Метод можно использовать для извлечения вложенных ключей через точку:
<?php
use Illuminate\Support\Arr;
$config = [
'app' => [
'name' => 'Laravel',
'version' => '10.0'
],
'database' => [
'host' => 'localhost',
'port' => 3306
]
];
$res = Arr::only($config, ['app.name', 'database.host']);
print_r($res);
?>
Результат выполнения кода:
[
"app.name" => "Laravel",
"database.host" => "localhost"
]