Laravel 5.7 中的 Arr::get() 与 data_get()

O C*_*nor 3 php arrays facade laravel-5

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

$my_arr = [
    'a' => ['lower' => 'aa', 'upper' => 'AAA',], 
    'b' => ['lower' => 'bbb', 'upper' => 'BBBBB',],
];
Run Code Online (Sandbox Code Playgroud)

因此,我可以a通过这样做来降低。

data_get($my_arr, 'a.lower');
Run Code Online (Sandbox Code Playgroud)

您还可以执行以下操作。

Arr::get('a.lower');
Run Code Online (Sandbox Code Playgroud)

如果我只想获得数组的第一级。我只能两者兼得:

data_get($my_arr, 'a');
Run Code Online (Sandbox Code Playgroud)

或者

Arr::get($my_arr, 'a');
Run Code Online (Sandbox Code Playgroud)

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

Chi*_*ung 5

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

1. 通配符匹配

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

例子:

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

2. 变量类型

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