• Время чтения ~1 мин
  • 11.07.2023

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!

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297