Arr::get() vs data_get() in Laravel 5.7



使用data_get()辅助函数,我们可以使用点.表示法获取嵌套数组的值,如下所示:

$my_arr = [
'a' => ['lower' => 'aa', 'upper' => 'AAA',], 
'b' => ['lower' => 'bbb', 'upper' => 'BBBBB',],
];

因此,我可以通过这样做获得更低的a

data_get($my_arr, 'a.lower');

您还执行以下操作。

Arr::get('a.lower');

如果我只想获得数组的第一级。我只能做到这两点:

data_get($my_arr, 'a');

Arr::get($my_arr, 'a');

你推荐我哪一个,为什么?我只是想继续改善我的Laravel体验,并从高级开发人员那里获得很好的建议,以选择目前的最佳选择。

这取决于上下文来决定使用哪一个。

1. 通配符匹配

如果需要在索引中使用通配符,则必须使用data_get因为Arr::get不支持通配符。

例:

Arr::get($my_arr, '*.lower'); // null
data_get($my_arr, '*.lower'); // ["aa", "bbb"]

2. 变量类型

Arr::get只是假设您的变量是一个数组。因此,如果您使用对象,则必须使用data_get.但是,如果您确定变量是数组并且不需要通配符,则应继续执行Arr::get以避免对评估值的data_get进行不必要的检查,以查看变量是对象还是数组。

你也可以使用array_get()方法,它和Arr::get()一样。当然,如果您安装了拉拉维尔/助手包。

检查./vendor/laravel/helpers/src/helpers.php文件。

最新更新