Laravel 几个有趣的辅助函数

文档地址

数组函数data_*系列

data_fill 填充

用于多维数组或对象设置缺省值;
多级键名可以用.连接;
可以使用*作为通配符;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$data = [
'products' => [
['name' => 'Desk 1', 'price' => 100],
['name' => 'Desk 2'],
],
];

data_fill($data, 'products.*.price', 200);

/*
[
'products' => [
['name' => 'Desk 1', 'price' => 100],
['name' => 'Desk 2', 'price' => 200],
],
]
*/

data_get 检索

data_fill相反,用于从多维数组或对象中检索值;
多级键名可以用.连接;
可以使用*作为通配符;
如果找不到指定的键,可设置默认返回值;

1
$discount = data_get($data, 'products.desk.discount', 0);

data_set 设置

data_fill不同在于,data_set默认会覆盖原有值;
可以设置第四个参数为false,用于取消覆盖;

1
2
3
4
5
$data = ['products' => ['desk' => ['price' => 100]]];

data_set($data, 'products.desk.price', 200, false);

// ['products' => ['desk' => ['price' => 100]]]