Laravel известен своей элегантностью, простотой и выразительностью. Одной из самых мощных функций Laravel являются вспомогательные функции. Помощники массива Laravel являются важным инструментом для разработчиков, работающих с массивами данных.
В этой статье мы рассмотрим некоторые вспомогательные функции массива Laravel, которые должен знать каждый разработчик. Эти помощники могут сэкономить время и сделать работу с массивами более управляемой. Мы рассмотрим join()
, , , keyBy()
first()
last()
, , get()
и pluck()
. Итак, давайте погрузимся и посмотрим, что могут предложить помощники массива Laravel!
Присоединение к массиву Вы можете подумать: «Зачем
мне этот помощник, если я могу использовать join()
илиimplode()
?»
use Illuminate\Support\Arr;
$stack = ['Tailwind', 'Alpine', 'Laravel', 'Livewire'];
Arr::join($stack, ', ');
// Tailwind, Alpine, Laravel, Livewire
implode($stack, ', ');
// Tailwind, Alpine, Laravel, Livewire
Вышеизложенное работает точно так же, поэтому я оставлю вам решать, какой стиль вы предпочитаете.
Помощник join()
действительно пригодится, когда вы хотите, чтобы последнее значение использовало отдельную соединительную строку:
use Illuminate\Support\Arr;
$stack = ['Tailwind', 'Alpine', 'Laravel', 'Livewire'];
Arr::join($stack, ', ', ', and');
// Tailwind, Alpine, Laravel, and Livewire
Данные
массива с ключом Иногда вы берете массив данных (т. е. несколько продуктов) и вводите данные по заданному атрибуту продукта. Таким образом, вы можете удобно нацеливать данные для данного ключа.
Возможно, вы написали что-то вроде следующего, создав новую переменную и вставив в нее данные с помощью ключевого значения:
$array = [
['product_id' => 'prod-100', 'name' => 'Desk'],
['product_id' => 'prod-200', 'name' => 'Chair'],
];
$keyed = [];
foreach ($array as $value) {
$keyed[$value['product_id']] = $value;
}
/*
[
'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'],
'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'],
]
*/
Используя метод, Arr::keyBy()
вы можете сделать то же самое с помощью одной строки кода:Проверка и получение данных из массива
$keyed = Arr::keyBy($array, 'product_id');
Мощный Arr::get()
метод прост в использовании, но содержит мощную «точечную нотацию», которую вы можете использовать для простого получения вложенных данных:
use Illuminate\Support\Arr;
$data = [
'products' => [
'desk' => [
'name' => 'Oakendesk'
'price' => 599.00,
'description' => 'Solid oak desk built from scratch.'
],
],
];
// 599.00
Arr::get($data, 'products.desk.price');
// Returns false
Arr::has($data, 'products.desk.discount');
// Returns null
Arr::get($data, 'products.desk.discount');
// Returns custom default value if not found.
Arr::get($data, 'products.desk.discount', ['type' => 'percent', 'value' => 10]);
Получение первого или последнего элемента в массиве
Если у вас есть массив и вы хотите получить последний элемент, вы можете обратиться к end()
функции в PHP:Однако, если ваш массив пуст, вы false
получите вместо этого:Используя вспомогательный last()
инструмент Laravel, у вас есть несколько вариантов, когда массив пуст
$array = [100, 200, 300, 110];
end($array);
:Использование вспомогательного устройства Laravel также позволяет передать замыкание в качестве второго аргумента в качестве условия для того, какой элемент должен быть возвращен первым или последним соответственно:
$array = [];
end($array); // false
use Illuminate\Support\Arr;
$array = [];
Arr::last($array); // null
// Provide a default
Arr::last($array, null, 100); // 100
$array = [100, 200, 300, 110];
Arr::last($array, fn ($e) => $e > 110); // 300
Arr::first($array, fn ($e) => $e > 110); // 200
Простой, но мощный API для многих ситуаций, в которых вы можете оказаться при получении первого или последнего элемента в данных массива.
Извлечение данных из массива
Иногда вам нужно получить один скалярный фрагмент данных из коллекции данных (т. е. электронных писем от пользователей):Помощник Laravel Arr::pluck()
делает это тривиальным:Подробнее Надеюсь
$array = [
['user' => ['id' => 1, 'name' => 'User 1', 'email' => '[email protected]']],
['user' => ['id' => 2, 'name' => 'User 2', 'email' => '[email protected]']],
];
$emails = [];
foreach ($array as $result) {
$emails[] = $result['user']['email'];
}
/*
[
"[email protected]",
"[email protected]",
]
*/
, вы видели тему:
Arr::pluck($array, 'user.email');
помощники заменяют избыточные задачи выразительным синтаксисом. Я считаю, что у них есть несколько других преимуществ: мы можем использовать дополнительную мощность, которую предоставляют некоторые из этих методов, когда это необходимо (например, условие замыкания в first()
и ), и это позволяет избежать временных переменных и last()
циклов, которые создают умственные накладные расходы для повторяющихся вещей.
Хотя на первый взгляд вспомогательные функции в любом языке могут показаться излишними для использования встроенных возможностей языка; тем не менее, я надеюсь, что вы видели, насколько мощными они могут сделать избыточные вещи, которые вам нужно будет сделать во многих ваших приложениях. Мы только поцарапали поверхность всего, что доступно в классеArr
. Иногда нам нужны простые помощники массива, а иногда вам нужна мощь коллекций.
Если вы новичок в фреймворке Laravel, ознакомьтесь с документацией Helpers, чтобы узнать обо всех полезных помощниках строк и массивов, которые у вас под рукой в проектах Laravel. Скорее всего, вам понадобятся эти помощники в других PHP-проектах, которые тоже не используют Laravel!