目录
合并数组:Arr::add()
过滤数组中的空值:Arr::where()Arr::whereNotNull()
拆分数组:Arr::only()Arr::except()
扁平化嵌套数组:Arr::flatten()
首页 php框架 Laravel 使用Laravel的内置' Arr”助手。

使用Laravel的内置' Arr”助手。

Aug 02, 2025 am 09:30 AM
laravel

Laravel 的 Arr 类提供了多个实用方法简化数组操作。1. Arr::get() 可安全地从数组中取值,支持点号语法和默认值(包括闭包);2. Arr::add() 用于添加键值对,若键已存在则不覆盖;3. Arr::where() 和 Arr::whereNotNull() 可过滤无效数据,其中后者仅过滤 null 值;4. Arr::only() 和 Arr::except() 用于提取或排除指定字段;5. Arr::flatten() 能将多维数组扁平化,支持限制展开层级。这些方法提升了代码的安全性、可读性和开发效率。

Using Laravel\'s built-in `Arr` helper.

处理数组在 PHP 开发中是非常常见的任务,特别是在 Laravel 这样的框架中。Laravel 提供了一个非常实用的 Arr 类(全名是 Illuminate\Support\Arr),它包含了许多静态方法来帮助你更轻松地操作数组。

Using Laravel's built-in `Arr` helper.

下面是一些你在日常开发中最可能会用到的 Arr 方法和使用建议。


从数组中安全取值:Arr::get()

直接访问数组元素时,如果键不存在会触发错误或警告。Arr::get() 可以避免这个问题,并且允许设置默认值。

Using Laravel's built-in `Arr` helper.
use Illuminate\Support\Arr;

$data = ['user' => ['name' => 'John', 'age' => 30]];

$name = Arr::get($data, 'user.name'); // John
$gender = Arr::get($data, 'user.gender', 'unknown'); // unknown

这个方法特别适合在不确定结构的数据中提取信息,比如 API 响应、配置文件等。

小技巧:

Using Laravel's built-in `Arr` helper.
  • 支持点号语法访问多维数组。
  • 默认值可以是一个闭包,按需生成。

合并数组:Arr::add()

有时候我们想给数组添加一个键值对,但又不想覆盖已有的键。这时候可以用 Arr::add()

$array = ['name' => 'John'];

$result = Arr::add($array, 'age', 30);
// ['name' => 'John', 'age' => 30]

$result = Arr::add($array, 'name', 'Jane');
// 还是 ['name' => 'John']

这比 array_merge() 更谨慎,适用于只在键不存在时才插入数据的场景。


过滤数组中的空值:Arr::where()Arr::whereNotNull()

这两个方法能帮你快速清理数组中的无效数据。

$input = [1, null, '', 0, false, 5];

$filtered = Arr::where($input, function ($value) {
    return !is_null($value);
});
// [0 => 1, 2 => '', 3 => 0, 4 => false, 5 => 5]

如果你只想去掉 null 值,可以直接用:

$cleaned = Arr::whereNotNull($input);
// [0 => 1, 2 => '', 3 => 0, 4 => false, 5 => 5]

注意:空字符串、0false 都不是 null,所以不会被过滤掉。如果要排除这些值,需要自定义判断逻辑。


拆分数组:Arr::only()Arr::except()

这两个方法用于从数组中取出你需要的部分,或者排除你不想要的字段。

$data = ['name' => 'John', 'age' => 30, 'email' => 'john@example.com'];

Arr::only($data, ['name', 'email']);
// ['name' => 'John', 'email' => 'john@example.com']

Arr::except($data, ['age']);
// ['name' => 'John', 'email' => 'john@example.com']

这对处理用户输入(如请求参数)非常有用,尤其是做数据清洗或权限控制的时候。


扁平化嵌套数组:Arr::flatten()

当你的数组是多维结构时,可以使用 Arr::flatten() 把它变成一维数组。

$array = [[1, 2], [3, 4], 5];
$flattened = Arr::flatten($array);
// [1, 2, 3, 4, 5]

这个方法也支持限制展开的层级,例如只展开一层。


基本上就这些了。Laravel 的 Arr 帮助类提供了很多开箱即用的方法,能大大简化数组处理的代码量。虽然有些功能也可以用原生 PHP 实现,但用 Arr 能写出更清晰、安全、易读的代码。

以上是使用Laravel的内置' Arr”助手。的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

PHP教程
1585
276
如何在Laravel中实施推荐系统? 如何在Laravel中实施推荐系统? Aug 02, 2025 am 06:55 AM

创建referrals表记录推荐关系,包含推荐人、被推荐人、推荐码及使用时间;2.在User模型中定义belongsToMany和hasMany关系以管理推荐数据;3.用户注册时生成唯一推荐码(可通过模型事件实现);4.注册时通过查询参数捕获推荐码,验证后建立推荐关系并防止自荐;5.当被推荐用户完成指定行为(如下单)时触发奖励机制;6.生成可分享的推荐链接,可使用Laravel签名URL增强安全性;7.在仪表板展示推荐统计信息,如总推荐数和已转化数;必须确保数据库约束、会话或Cookie持久化、

如何使用Laravel构建REST API? 如何使用Laravel构建REST API? Jul 30, 2025 am 03:41 AM

创建新Laravel项目并启动服务;2.生成模型、迁移和控制器并运行迁移;3.在routes/api.php中定义RESTful路由;4.在PostController中实现增删改查方法并返回JSON响应;5.使用Postman或curl测试API功能;6.可选地通过Sanctum添加API认证;最终得到一个结构清晰、功能完整且可扩展的LaravelRESTAPI,适用于实际应用。

如何在Laravel雄辩中使用访问者和突变器? 如何在Laravel雄辩中使用访问者和突变器? Aug 02, 2025 am 08:32 AM

conscortorSandMutatorsInlaravel'SeloquentormallowyOutoFormAtormanIpulateModeModeLattributesWhenRetRievorvingOrstTingValues.1.useaccessorstocustomizeattributeretributeretrieval,sueascaScapapitalizingfirst_namevirst_nameviagetFirstnameAtTeameAtTeameAtTeameAtTeameAtTeameAttribute($ value)($ value)

Laravel的存储库合同是什么? Laravel的存储库合同是什么? Aug 03, 2025 am 12:10 AM

Repository模式是一种设计模式,用于解耦业务逻辑与数据访问逻辑。1.它通过接口(Contract)定义数据访问方法;2.具体操作由Repository类实现;3.控制器通过依赖注入使用接口,不直接接触数据源;4.优势包括代码整洁、可测试性强、便于维护和团队协作;5.适用于中大型项目,小型项目可直接使用模型。

如何在Laravel雄辩中使用子征服? 如何在Laravel雄辩中使用子征服? Aug 05, 2025 am 07:53 AM

laravelleloquentsuportsubqueriesInSelect,从哪里,andorderbyClauses启用Feflexibledataretievalwithoutrawsql; 1.UseselectSub()toaddcompentedColumnSlumnsLikePostCountCountCountCountCountPeruser; 2.Usefromsub; 2.usefromsub; 2.Usefromsub orclosolusoblesoblesoboledInfom()

使用在Laravel中验证的表单请求。 使用在Laravel中验证的表单请求。 Jul 30, 2025 am 05:04 AM

使用FormRequests可以将复杂的表单验证逻辑从控制器中抽离,提高代码可维护性和复用性。1.创建方式:通过Artisan命令make:request生成请求类;2.定义规则:在rules()方法中设置字段验证逻辑;3.控制器使用:直接以该类作为参数接收请求,Laravel自动验证;4.授权判断:通过authorize()方法控制用户权限;5.动态调整规则:根据请求内容动态返回不同验证规则。

如何与Laravel创建一个宁静的API? 如何与Laravel创建一个宁静的API? Aug 02, 2025 pm 12:31 PM

创建Laravel项目并配置数据库环境;2.使用Artisan生成模型、迁移和控制器;3.在api.php中定义API资源路由;4.实现控制器中的增删改查方法并使用请求验证;5.安装LaravelSanctum实现API认证并保护路由;6.统一JSON响应格式并处理错误;7.使用Postman等工具测试API,最终得到一个功能完整、可扩展的RESTfulAPI。

如何与Laravel进行反应? 如何与Laravel进行反应? Jul 30, 2025 am 04:05 AM

setuplaravelasanapibackendbyInstallinglaravel,配置thephatabase,createApiRoutes,andReturningjsonFromControllers,opoteallylaravelsanctumforauthentication.2.ChooseBetebetebetweenastheimenastheimenAstalonerOnereActSpasseDspaseverSeverSeverSeverSeverSeverSeverSepareTeryInerTiaerTia.jssostiausisionInerTia.jsoforterightime forterignerlaravel

See all articles