登录  /  注册
博主信息
博文 4
粉丝 0
评论 0
访问量 2804
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
Laravel一些好用的操作数组的助手函数分享
雨天的小草的博客
原创
1022人浏览过

1、Arr::add()

如果给定的键在数组中不存在或给定的键的值被设置为 null ,那么 Arr::add 函数将会把给定的键值对添加到数组中:
  1. use Illuminate\Support\Arr;
  2. $array = Arr::add(['name' => 'Desk'], 'price', 100);
  3. // ['name' => 'Desk', 'price' => 100]
  4. $array = Arr::add(['name' => 'Desk', 'price' => null], 'price', 100);
  5. // ['name' => 'Desk', 'price' => 100]

2、Arr::collapse()

将多个数组合并为一个数组:
  1. use Illuminate\Support\Arr;
  2. $array = Arr::collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
  3. // [1, 2, 3, 4, 5, 6, 7, 8, 9]

3、Arr::dot()

将多维数组中所有的键平铺到一维数组中,新数组使用「.」符号表示层级包含关系:
  1. use Illuminate\Support\Arr;
  2. $array = ['products' => ['desk' => ['price' => 100]]];
  3. $flattened = Arr::dot($array);
  4. // ['products.desk.price' => 100]

4、Arr::except()

函数从数组中删除指定的键值对:
  1. use Illuminate\Support\Arr;
  2. $array = ['name' => 'Desk', 'price' => 100];
  3. $filtered = Arr::except($array, ['price']);
  4. // ['name' => 'Desk']

5、Arr::first()

函数返回数组中满足指定条件的第一个元素:
  1. use Illuminate\Support\Arr;
  2. $array = [100, 200, 300];
  3. $first = Arr::first($array, function ($value, $key) {
  4. return $value >= 150;
  5. });
  6. // 200
将默认值作为第三个参数传递给该方法,如果没有值满足条件,则返回该默认值:
  1. use Illuminate\Support\Arr;
  2. $first = Arr::first($array, $callback, $default);

6、Arr::only()

函数只返回给定数组中指定的键值对:
  1. use Illuminate\Support\Arr;
  2. $array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];
  3. $slice = Arr::only($array, ['name', 'price']);
  4. // ['name' => 'Desk', 'price' => 100]

7、Arr::pluck()

函数从数组中检索给定键的所有值:
  1. use Illuminate\Support\Arr;
  2. $array = [
  3. ['developer' => ['id' => 1, 'name' => 'Taylor']],
  4. ['developer' => ['id' => 2, 'name' => 'Abigail']],
  5. ];
  6. $names = Arr::pluck($array, 'developer.name');
  7. // ['Taylor', 'Abigail']
你也可以指定结果的键:
  1. use Illuminate\Support\Arr;
  2. $names = Arr::pluck($array, 'developer.name', 'developer.id');
  3. // [1 => 'Taylor', 2 => 'Abigail']
还可以给整个数组重新定义键
  1. use Illuminate\Support\Arr;
  2. $names = Arr::pluck($array,null, 'developer.id');
  3. // ['1'=>['developer' => ['id' => 1, 'name' => 'Taylor']],'2'=>['developer' => ['id' => 2, 'name' => 'Abigail']]];

9、data_get()

函数使用「.」符号从多维数组或对象中根据指定键检索值:
  1. $data = ['products' => ['desk' => ['price' => 100]]];
  2. $price = data_get($data, 'products.desk.price');
  3. // 100
也接受一个默认值,如果没有找到指定的键,将返回默认值
  1. $discount = data_get($data, 'products.desk.discount', 0);
  2. // 0
也可以使用 「*」 作为通配符匹配键名
  1. $data = [
  2. 'product-one' => ['name' => 'Desk 1', 'price' => 100],
  3. 'product-two' => ['name' => 'Desk 2', 'price' => 150],
  4. ];
  5. data_get($data, '*.name');
  6. // ['Desk 1', 'Desk 2'];

10、data_set()

函数使用「.」符号给多维数组或对象赋值:
  1. $data = ['products' => ['desk' => ['price' => 100]]];
  2. data_set($data, 'products.desk.price', 200);
  3. // ['products' => ['desk' => ['price' => 200]]]
这个函数也支持使用「*」作为通配符给相应键名赋值:
  1. $data = [
  2. 'products' => [
  3. ['name' => 'Desk 1', 'price' => 100],
  4. ['name' => 'Desk 2', 'price' => 150],
  5. ],
  6. ];
  7. data_set($data, 'products.*.price', 200);
  8. /*
  9. [
  10. 'products' => [
  11. ['name' => 'Desk 1', 'price' => 200],
  12. ['name' => 'Desk 2', 'price' => 200],
  13. ],
  14. ]
  15. */
通常情况下,已存在的值将会被覆盖。如果只是希望设置一个目前不存在的值,你可以增加一个 false 作为函数的第四个参数:
  1. $data = ['products' => ['desk' => ['price' => 100]]];
  2. data_set($data, 'products.desk.price', 200, false);
  3. // ['products' => ['desk' => ['price' => 100]]]

参考资料:

https://learnku.com/docs/laravel/8.x/helpers/9393#method-data-fill

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学