Laravel - 数组函数

引入包

use Illuminate\Support\Arr;

一、检查给定的值是否可数组式访问

Arr::accessible(['a' => 1, 'b' => 2]);// true

二、数组添加 

Arr::add(['name' => 'Desk'], 'price', 100) ;// ['name' => 'Desk', 'price' => 100]
Arr::add(['name' => 'Desk', 'price' => null], 'price', 100);// ['name' => 'Desk', 'price' => 100] 若添加的键值存在并且值为null,则会将null改为修改的值

三、数组修改

$array = ['products' => ['desk' => ['price' => 100]]];
Arr::set($array, 'products.desk.price', 200); // ['products' => ['desk' => ['price' => 200]]]

四、 数组删除

         1.根据键值删除数组

Arr::except(['name' => 'Desk', 'price' => 100], ['price']);
// ['name' => 'Desk']

         2.从嵌套的数组中删除给定的键值对

Arr::forget(['products' => ['desk' => ['price' => 100]]], 'products.desk');
//['products' => []]

 五、查询

        1.判断数组中指定键值是否存在

Arr::exists(['name' => 'John Doe', 'age' => 17], 'name');// true

        2. 判断数组中是否存在指定的一个或多个键

$array = ['product' => ['name' => 'Desk', 'price' => 100]]; $contains = Arr::has($array, 'product.name');// true $contains = Arr::has($array, ['product.price', 'product.discount']);// false

        3.根据指定键查询数组,返回数组的值

$array = ['products' => ['desk' => ['price' => 100]]];$price = Arr::get($array, 'products.desk.price');// 100//函数也可以接受一个默认值,如果没有找到特定的键,将返回默认值
$discount = Arr::get($array, 'products.desk.discount', 0); //0

         4.返回数组中满足指定条件的第一个/最后一个元素

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

        5.根据条件查询数组 

$array = [100, '200', 300, '400', 500];$filtered = Arr::where($array, function ($value, $key) {return is_string($value);
}); 
// [1 => '200', 3 => '400']

         6.根据指定的键查询数组,返回键值对(数组)

$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];$slice = Arr::only($array, ['name', 'price']); 
// ['name' => 'Desk', 'price' => 100]

         7.根据指定的键,返回所有值(数组)

array = [
['developer' => ['id' => 1, 'name' => 'Taylor']],
['developer' => ['id' => 2, 'name' => 'Abigail']],
];$names = Arr::pluck($array, 'developer.name'); 
// ['Taylor', 'Abigail']##可以指定结果的键
$names = Arr::pluck($array, 'developer.name', 'developer.id'); 
// [1 => 'Taylor', 2 => 'Abigail']

         8.从数组中随机返回一个或多个值

$array = [1, 2, 3, 4, 5];$random = Arr::random($array);
//4$items = Arr::random($array, 2);
// [2, 5]  返回数组

 六、数组操作

        1.数组合并

Arr::collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
//[1, 2, 3, 4, 5, 6, 7, 8, 9]

        2. 返回多个数组具有所有可能排列的笛卡尔乘积

Arr::crossJoin([1, 2], ['a', 'b']);
// [[1, 'a'],[1, 'b'],[2, 'a'],[2, 'b']]

        3.将多维数组中所有的 键 平铺到一维数组中,新数组使用「.」符号表示层级包含关系

Arr::dot(['products' => ['desk' => ['price' => 100]]]); 
// ['products.desk.price' => 100]

        4.将多维数组中数组的 值 取出平铺为一维数组 

Arr::flatten(['name' => 'Joe', 'languages' => ['PHP', 'Ruby']]); 
// ['Joe', 'PHP', 'Ruby']

        5.使用「点表示法」的一维数组扩展为多维数组 

$array = ['user.name' => 'Kevin Malone','user.occupation' => 'Accountant',
];$array = Arr::undot($array);// ['user' => ['name' => 'Kevin Malone', 'occupation' => 'Accountant']]

七、排序 

        1.随机排序

$array = Arr::shuffle([1, 2, 3, 4, 5]);
// [3, 2, 5, 1, 4] 

        2. 根据数组的值大小进行排序

$array = ['Desk', 'Table', 'Chair'];
$sorted = Arr::sort($array);
// ['Chair', 'Desk', 'Table']//根据给定回调函数返回的结果对数组进行排序
$array = [['name' => 'Desk'],['name' => 'Table'],['name' => 'Chair'],
];$sorted = array_values(Arr::sort($array, function ($value) {return $value['name'];
}));/*[['name' => 'Chair'],['name' => 'Desk'],['name' => 'Table'],]
*/

        3.递归排序 

$array = [['Roman', 'Taylor', 'Li'],['PHP', 'Ruby', 'JavaScript'],['one' => 1, 'two' => 2, 'three' => 3],
];$sorted = Arr::sortRecursive($array);/*[['JavaScript', 'PHP', 'Ruby'],['one' => 1, 'three' => 3, 'two' => 2],['Li', 'Roman', 'Taylor'],]
*/

八、其他 

        1.用于动态css赋值,根据给定的条件编译并返回 CSS 类字符串,为true 的返回

$isActive = false;
$hasError = true;
$array = ['p-4', 'font-bold' => $isActive, 'bg-red' => $hasError];
$classes = Arr::toCssClasses($array);
//'p-4 bg-red'

九、数组函数

        1.数组修改,给多维数组或对象设置缺少的值

data = ['products' => ['desk' => ['price' => 100]]];data_fill($data, 'products.desk.price', 200);//未成功修改,值存在 ['products' => ['desk' => ['price' => 100]]]data_fill($data, 'products.desk.discount', 10);
// ['products' => ['desk' => ['price' => 100, 'discount' => 10]]]//此函数也可以接收「*」作为通配符,设置相应缺少的值
$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],],]
*/

        2. 数组修改,给多维数组或对象设置值

$data = ['products' => ['desk' => ['price' => 100]]];data_set($data, 'products.desk.price', 200);// ['products' => ['desk' => ['price' => 200]]]//支持使用「*」作为通配符给相应键名赋值:$data = ['products' => [['name' => 'Desk 1', 'price' => 100],['name' => 'Desk 2', 'price' => 150],],
];data_set($data, 'products.*.price', 200);/*['products' => [['name' => 'Desk 1', 'price' => 200],['name' => 'Desk 2', 'price' => 200],],]
*/

        3.根据指定的键查询数组的值,返回String

$data = ['products' => ['desk' => ['price' => 100]]];$price = data_get($data, 'products.desk.price'); //100//该函数也接受一个默认值,如果没有找到指定的键,将返回默认值:
$discount = data_get($data, 'products.desk.discount', 0);// 0//该函数还接受「*」为通配符,来指向数组或对象的任何键:$data = ['product-one' => ['name' => 'Desk 1', 'price' => 100],'product-two' => ['name' => 'Desk 2', 'price' => 150],
];data_get($data, '*.name');// ['Desk 1', 'Desk 2'];

         4.返回数组中的第一个/最后一个值

$array = [100, 200, 300];
$first = head($array);// 100//last 函数将返回数组中的最后一个值
$array = [100, 200, 300];
$last = last($array);// 300


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/8295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子元器件商城如何建设

建设一个成功的电子元器件商城需要考虑以下几个方面: 1. 明确目标市场和用户需求 确定目标客户群是个人爱好者、小型企业还是大型制造商?了解目标客户群对电子元器件的需求特点,例如价格、质量、品牌、规格、技术支持等。 2. 选择合适的电…

Seal^_^【送书活动第3期】——《Hadoop大数据分析技术》

Seal^_^【送书活动第3期】——《Hadoop大数据分析技术》 一、参与方式二、作者荐语三、图书简介四、本期推荐图书4.1 前 言4.2 本书内容4.3 本书目的4.4 本书适合的读者4.5 配套源码、PPT课件等资源下载 五、目 录六、🛒 链接直达 Hadoop框架入门书,可当…

async详解

async(1): cpp20协程基础-CSDN博客async(2)concept与辅助类-CSDN博客async(3)句柄、Selector、EventLoop-CSDN博客async(4) 返回值-CSDN博客async(5) 封装-CSDN博客async(6) (批量)等待-CSDN博客async(7) 网络相关-CSDN博客

语言模型测试系列【7】

语言模型 文心一言星火认知大模型通义千问豆包360智脑百川大模型腾讯混元助手Kimi Chat商量C知道 今天看CSDN文章,看到了斐波那契数列这个有趣的数列计算,然后就在文心一言中对答了一波,给的答案很完整,而且给出来python的实现代…

Golang | Leetcode Golang题解之第69题x的平方根

题目&#xff1a; 题解&#xff1a; func mySqrt(x int) int {if x 0 {return 0}C, x0 : float64(x), float64(x)for {xi : 0.5 * (x0 C/x0)if math.Abs(x0 - xi) < 1e-7 {break}x0 xi}return int(x0) }

沟通【说明事物、表达情感、建立关系、进行企图】

沟通目的&#xff1a; 说明事物表达情感建立关系进行企图 缘解释为&#xff1a;机会 or 关系 沟通是有来有往&#xff0c;你来几句&#xff0c;我来几句。 我讲几句&#xff0c;停下来&#xff0c;有反应 沟通结果&#xff1a;产生一起的行动 第一句话是先认同他【先赞成&a…

【GUI软件】调用YouTube的API接口,采集关键词搜索结果,并封装成界面工具!

文章目录 一、背景介绍1.1 爬取目标1.2 演示视频1.3 软件说明 二、代码讲解2.1 调用API-搜索接口2.2 调用API-详情接口2.3 API_KEY说明2.4 软件界面模块2.5 日志模块 三、获取源码及软件 一、背景介绍 1.1 爬取目标 您好&#xff01;我是马哥python说&#xff0c;一名10年程序…

D盘被格式化了能找回吗 d盘格式化了数据可以找回来吗

D盘作为电脑中重要的磁盘之一&#xff0c;很多用户都会将一些重要的数据保存在D盘。但在磁盘空间不足的情况下&#xff0c;或许有些用户会将其进行格式化&#xff0c;D盘被格式化了如何恢复数据&#xff1f; 如果是比较重要的数据&#xff0c;建议用户立即进行数据恢复操作&am…

Ansible之Playbook的Template模板和tags标签

文章目录 一、Template模块1、准备template模板文件2、修改主机清单文件3、编写playbook4、执行playbook5、准备测试网页6、访问测试 二、tags模块1、编写脚本2、执行tags"xx01"3、执行tags"xx02" 一、Template模块 Jinja是基于Python的模块引擎。Templat…

小米手机怎么截屏?一篇文章教会你!

我们经常需要截取手机屏幕上的内容&#xff0c;无论是为了分享、教学还是记录。对于小米手机用户来说&#xff0c;掌握截屏技巧不仅能够方便地记录精彩瞬间&#xff0c;还能在需要时轻松分享或保存屏幕内容。小米手机怎么截屏&#xff0c;有哪些截屏方式呢&#xff1f;本文将为…

执行 .sh文件报错

执行.sh文件报错&#xff1a;: ▒▒▒Ǹ▒▒ļ▒▒▒Ŀ1 ▒▒&#x1f4bf; . ./start.sh 修改 vim vim /etc/profileexport LC_ALLzh_CN.GBK export LANGzh_CN.GBK #修改成下面的 export LC_ALLzh_CN.UTF-8 export LANGzh_CN.UTF-8执行命令source /etc/profile如果还报$等符号…

TesseractOCR安装及使用

1. 基本概念 1.1 Tesseract Tesseract 是一款基于 C 语言开发并开源的光学识别工具&#xff0c;提供底层的文字识别能力。 1.2 Tess4J Tess4J 是对 Tesseract OCR API 的 Java 封装&#xff0c;有了 Tess4J 之后 Java 就可以直接调用本地安装的 Tesseract 进行文字识别。 …

408数据结构总结复习笔记一:线性表

408数据结构总结复习笔记一&#xff1a;线性表 从现在开始慢慢更新我的考研复习笔记系列吧~ PS&#xff1a;主要是我自己个人复习过程中觉得重点的点&#xff0c;大家仅供参考哈~ 上岸&#xff01;&#xff01;&#xff01;大家一起加油! 顺序表和链表的比较 顺序表链表存取…

前端GET请求下载后端返回数据流文件,并且处理window.open方法跳转白屏方法

平时常用导出都是用window.open方法 点击跳转连接&#xff1a;使用 window.open 下载 const downError 地址?&参数${参数|| }; const downError Url/xxx/xxx?&orgId${orgId || };window.open(downError, "_self");//调用window.open方法导出 而使用…

idea快捷键被占用,如何解决ctrl+\ 为例

本来这个这个快捷键ctrl\ 是只有restful 插件才生效的&#xff0c;但是idea升级了之后&#xff0c;多了个 AI Assistant 这样他也有个快捷键是这个&#xff0c; 所以 需要借助 settings - keymap - 直接找到右边的放大镜&#xff0c;可以输入快捷键查询 把ai 那个啥玩意…

从零手写实现 tomcat-04-请求和响应的抽象

创作缘由 平时使用 tomcat 等 web 服务器不可谓不多&#xff0c;但是一直一知半解。 于是想着自己实现一个简单版本&#xff0c;学习一下 tomcat 的精髓。 系列教程 从零手写实现 apache Tomcat-01-入门介绍 从零手写实现 apache Tomcat-02-web.xml 入门详细介绍 从零手写…

什么是香草看涨期权?香草看涨期权有哪些特点?

什么是香草看涨期权&#xff1f;香草看涨期权有哪些特点&#xff1f; 香草看涨期权&#xff0c;通常也称为香草期权&#xff0c;是金融市场上的一种金融衍生品&#xff0c;由券商或金融机构推出。它允许投资者以较小的费用获取相应股票市值的收益权&#xff0c;主要用于风险管…

Python爬虫获取豆瓣电影Top100

大家好&#xff0c;我是秋意零。 今天分析一篇&#xff0c;Python爬虫获取豆瓣电影Top100。 在此之前&#xff0c;我没有学习过爬虫&#xff0c;只有一丢丢的Python基础。下面效果的实现源码几乎没经过我&#xff0c;而是AI百老师。我主要负责了对应的调试以及根据我想要的功…

5月7号(信息差)

&#x1f30d;首次&#xff0c;西湖大学用蛋白质语言模型定向改造碱基编辑器&#xff0c;登Cell子刊 https://www.jiqizhixin.com/articles/2024-05-07-10 &#x1f384; 哈马斯宣布同意停火提议 https://finance.eastmoney.com/a/202405073067687785.html ✨ 中国将对…

吴恩达机器学习笔记:第 9 周-16推荐系统(Recommender Systems) 16.3-16.4

目录 第 9 周 16、 推荐系统(Recommender Systems)16.3 协同过滤16.4 协同过滤算法 第 9 周 16、 推荐系统(Recommender Systems) 16.3 协同过滤 在之前的基于内容的推荐系统中&#xff0c;对于每一部电影&#xff0c;我们都掌握了可用的特征&#xff0c;使用这些特征训练出了…