每个开发人员都应该知道的 Laravel 数组助手
发布日期:作者: Paul Redmond
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.00Arr::get($data, 'products.desk.price'); // Returns falseArr::has($data, 'products.desk.discount'); // Returns nullArr::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 defaultArr::last($array, null, 100); // 100
使用 Laravel 的助手还可以让您将闭包作为第二个参数传递,作为返回第一个或最后一个元素的条件
$array = [100, 200, 300, 110]; Arr::last($array, fn ($e) => $e > 110); // 300Arr::first($array, fn ($e) => $e > 110); // 200
简单但强大的 API,适用于您在数组数据中获取第一个或最后一个元素时遇到的许多情况。
从数组中获取数据
有时您需要从一组数据中获取一个标量数据(例如,用户的电子邮件)
$array = []; $emails = []; foreach ($array as $result) { $emails[] = $result['user']['email'];} /*[]*/
Laravel 的 Arr::pluck()
助手使这变得微不足道
Arr::pluck($array, 'user.email');
了解更多
我希望您已经看到了一种主题:助手用表达性的语法替换了冗余的任务。我相信它们还有其他一些好处:我们可以在需要时利用这些方法提供的一些额外功能(例如,在 first()
和 last()
中使用闭包条件),并且它避免了创建重复任务的心理负担的临时变量和循环。
尽管表面上,任何语言中的函数助手似乎都是使用内置语言功能的冗余,但是,我希望您已经看到它们能够使您在许多应用程序中需要执行的冗余任务变得多么强大。我们仅仅触及了 Arr
类中可用的一切的表面。有时我们需要简单的数组助手,而有时您需要 集合 的强大功能。
如果您是 Laravel 框架的新手,请查看 助手文档 以了解在 Laravel 项目中触手可及的所有有用的字符串和数组助手。您可能还想在不使用 Laravel 的其他 PHP 项目中使用这些助手!