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

问题描述 投票:1回答:1

使用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经验,并从高级开发人员那里获得好的建议,以便选择目前最好的选择。

php arrays laravel-5 facade helper-functions
1个回答
2
投票

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

1. Wildcard matching

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

例:

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

2. Variable Type

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

© www.soinside.com 2019 - 2024. All rights reserved.