每个开发人员都应该知道的 Laravel 数组助手

发布日期:作者:

Laravel Array Helpers Every Developer Should Know About image

Laravel 以其优雅、简洁和表达性而闻名。Laravel 最强大的功能之一是其助手函数。Laravel 的数组助手是开发人员处理数据数组的必备工具。

本文将探讨一些每个开发人员都应该知道的 Laravel 数组助手函数。这些助手可以节省时间,并使处理数组更加轻松。我们将介绍 join()keyBy()get()first()last()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]);

获取数组中的第一个或最后一个元素

当您有一个数组并想要获取最后一个元素时,您可以使用 PHP 中的 end() 函数

$array = [100, 200, 300, 110];
 
end($array);

但是,如果您的数组为空,您将获得 false 而不是

$array = [];
end($array); // false

使用 Laravel 的 last() 助手,您在数组为空时有多种选择

use Illuminate\Support\Arr;
 
$array = [];
 
Arr::last($array); // null
 
// Provide a default
Arr::last($array, null, 100); // 100

使用 Laravel 的助手还可以让您将闭包作为第二个参数传递,作为返回第一个或最后一个元素的条件

$array = [100, 200, 300, 110];
 
Arr::last($array, fn ($e) => $e > 110); // 300
Arr::first($array, fn ($e) => $e > 110); // 200

简单但强大的 API,适用于您在数组数据中获取第一个或最后一个元素时遇到的许多情况。

从数组中获取数据

有时您需要从一组数据中获取一个标量数据(例如,用户的电子邮件)

$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'];
}
 
/*
[
]
*/

Laravel 的 Arr::pluck() 助手使这变得微不足道

Arr::pluck($array, 'user.email');

了解更多

我希望您已经看到了一种主题:助手用表达性的语法替换了冗余的任务。我相信它们还有其他一些好处:我们可以在需要时利用这些方法提供的一些额外功能(例如,在 first()last() 中使用闭包条件),并且它避免了创建重复任务的心理负担的临时变量和循环。

尽管表面上,任何语言中的函数助手似乎都是使用内置语言功能的冗余,但是,我希望您已经看到它们能够使您在许多应用程序中需要执行的冗余任务变得多么强大。我们仅仅触及了 Arr 类中可用的一切的表面。有时我们需要简单的数组助手,而有时您需要 集合 的强大功能。

如果您是 Laravel 框架的新手,请查看 助手文档 以了解在 Laravel 项目中触手可及的所有有用的字符串和数组助手。您可能还想在不使用 Laravel 的其他 PHP 项目中使用这些助手!

Paul Redmond photo

Laravel 新闻的撰稿人。全栈 Web 开发人员和作家。

归档于
Cube

Laravel 时事通讯

加入 40,000 多位其他开发者,绝不错过新的技巧、教程等。

Laravel Forge logo

Laravel Forge

轻松创建和管理您的服务器,并以秒速部署您的 Laravel 应用程序。

Laravel Forge
Tinkerwell logo

Tinkerwell

Laravel 开发人员必备的代码运行器。使用 AI、自动完成和本地和生产环境的即时反馈进行调试。

Tinkerwell
No Compromises logo

绝不妥协

来自 No Compromises 播客的两名经验丰富的开发者 Joel 和 Aaron 现在可以为您的 Laravel 项目雇用。 ⬧ 固定费率 $7500/月。 ⬧ 无冗长的销售流程。 ⬧ 无合同。 ⬧ 100% 退款保证。

绝不妥协
Kirschbaum logo

Kirschbaum

提供创新和稳定性,确保您的 Web 应用程序成功。

Kirschbaum
Shift logo

Shift

运行旧版本的 Laravel?即时、自动化的 Laravel 升级和代码现代化,让您的应用程序保持新鲜。

Shift
Bacancy logo

Bacancy

只需 $2500/月,即可让经验丰富的 Laravel 开发人员(拥有 4-6 年的经验)为您的项目增光添彩。获得 160 小时的专用专业知识和 15 天免费试用。立即安排通话!

Bacancy
Lucky Media logo

Lucky Media

立即幸运 - Laravel 开发的理想选择,拥有十多年的经验!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar:Laravel 电子商务

Laravel 的电子商务。一个开源包,将现代无头电子商务功能的强大功能带入 Laravel。

Lunar:Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 工作板

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit:Laravel SaaS 启动套件

SaaSykit 是一个 Laravel SaaS 启动套件,它具有运行现代 SaaS 所需的所有功能。支付、漂亮的结账、管理面板、用户仪表板、身份验证、现成的组件、统计信息、博客、文档等等。

SaaSykit:Laravel SaaS 启动套件
Rector logo

Rector

您无缝 Laravel 升级的合作伙伴,降低成本,加快创新,助力企业成功

Rector
MongoDB logo

MongoDB

通过强大的 MongoDB 和 Laravel 集成增强您的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。支持事务、搜索、分析和移动用例,同时使用熟悉的 Eloquent API。了解 MongoDB 的灵活、现代数据库如何改变您的 Laravel 应用程序。

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

Maska 是一个简单的零依赖输入掩码库

阅读文章
Add Swagger UI to Your Laravel Application image

将 Swagger UI 添加到您的 Laravel 应用程序

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

在 Laravel 11.19 中断言响应的精确 JSON 结构

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

使用 PHP 和 Laravel 提示构建 SSH 应用程序

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

使用 Laravel 和 Typesense 构建快速、模糊的网站搜索

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 包将评论添加到您的 Laravel 应用程序

阅读文章