Laravel 几个有趣的辅助函数

文档地址

数组函数data_*系列

data_fill 填充

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

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

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

data_set 设置

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

$data = ['products' => ['desk' => ['price' => 100]]];

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

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