[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

引入 PHP8.4 中发布的新数组函数!

很高兴见到你!
我叫Iosa,是系统开发部的一年级成员!

最近突然变冷了。为什么天冷的时候我会感到孤独?

好吧,抛开这些不谈,PHP8.4 已经发布了! !
我们公司主要使用PHP进行开发,但是这次添加的数组函数看起来很好用,所以给大家介绍一下!

添加了数组函数

这次新增的是

  • 数组查找()
  • array_find_key()
  • 数组_任意()
  • 数组_全部()

将会有4个!
所有函数都可以通过传递数组作为第一个参数和回调函数作为第二个参数来使用。

回调函数的签名如下,第一个参数可以用作元素值,第二个参数可以用作元素键。

 回调(混合$值,混合$键):bool 

现在就让我来给大家介绍一下吧! !

array_find 函数

首先是 array_find 函数!
函数返回 true 的第一个元素的值如果未找到,null

下面是一个使用示例!

 $array = [ 'tamabaritake' => 'enoki', 'haratake' => 'shiitake', 'hiratake' => 'eringi', ]; // 查找数组值长度超过 6 个字符的元素 $result = array_find ( $array, function (string $value){ return strlen($value) > 6; var_dump($result); // 结果: string(8) "shiitake"

如上所示,回调函数中当strlen($value) > 6时变为true的值

如果回调函数返回 true 的值有多个如下所示,只会返回第一个元素

 // *数组值相同 // 查找数组值以e开头的元素 $result = array_find($array, function (string $value){ return str_starts_with($value, 'e'); }); var_dump($result); // 结果: string(5) "enoki"

您可能已经注意到,如果您使用 PHP 框架 Laravel,它Arr::first具有相同的行为

array_find_key 函数

接下来是 array_find_key 函数!

其回调函数返回 true 的第一个元素的如果未找到,返回 null
下面是一个使用示例!

 $array = [ 'tamabaritake' => 'enoki', 'haratake' => 'shiitake', 'hiratake' => 'eringi', ]; // 查找长度超过 6 个字符的数组值 $result = array_find_key ($数组,函数(字符串$值){返回strlen($值)> 6; //结果:字符串(8) “原竹”

如上所示,我们正在搜索数组值超过6个字符的元素,但返回的值是该元素的键

另外,与 array_find 函数一样,如果回调函数对多个值返回 true,则它只会返回第一个元素的键

 // *数组值相同 // 查找数组值以e开头的元素 $result = array_find_key($array, function (string $value){ return str_starts_with($value, 'e'); }) ; var_dump($result); // 结果: string(12) "tamabaritake" 

,有
一个类似的函数,array_search 函数,但是,通过使用 array_find_key 函数,您可以使用您在回调中设置的条件和正则表达式,因此我认为它具有很高的自由度并且易于在各种地方使用!

array_any 函数

接下来是 array_any 函数!
至少有元素返回 true ,则该函数将返回true 返回
false 下面是一个使用示例!

$array = [ 'tamabaritake' => 'enoki', 'haratake' => 'shiitake', 'hiratake' => 'eringi', ]; // 是否存在值以 m 开头的元素? $array, function (string $value){ return str_starts_with($value, 'm'); // 结果: bool(false) // 是否存在超过 6 个字符的值? $result = array_any($array, function (string $value){ return strlen($value) > 6; }); // 结果:布尔(真)

Laravel Collection 类中的contains 方法相同
(虽然内部处理不同...)对于那些使用过 contains 方法的人来说,我想很容易想象 array_any 函数的行为。

array_all 函数

最后一个是array_all函数!
如果所有元素都存在,则该函数true ,否则将返回false

下面是一个使用示例!

$array = [ 'tamabaritake' => 'enoki', 'haratake' => 'shiitake', 'hiratake' => 'eringi', ]; // 所有值都以 e 开头吗? array , function (string $value){ return str_starts_with($value, 'e'); // 结果: bool(false) //是否所有数组键都以 take 结尾? $result = array_any($array, function (string $value, string $key){ return preg_match('/.*take$/', $key); }); ); // 结果:布尔(true)

Laravel 的 Collection 类中的every 方法具有相同的行为

概括

它怎么样?

上述方法的详细解释在官方文档中都有提供,所以一定要查看一下!
添加功能列表: //www.php.net/releases/8.4/ja.php#new_array_find

就我个人而言,我觉得新的数组函数用途广泛且易于使用,因为它们可以使用回调函数。

我还认为有很多东西是借鉴自 Laravel 或受 Laravel 启发的。
如果这种趋势在未来有所增加并且 PHP 语言本身的便利性得到提高,我会很高兴!

我希望你能记住这个函数并想:“我希望有这样一个函数!”

 

 

如果您觉得这篇文章有帮助,请点赞!
4
加载中...
4 票,平均:1.00 / 14
64
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

约萨

我骑的是普通自行车。