PHP 7.3 中的数组外环操作函数

file

PHP 7.3 引入了两个新的函数用于处理数组的 外环 键。 RFC 提议了 包含键和值在内的四个新函数,但只有数组键函数被接受:

  • array_key_first() (接受)
  • array_key_last() (接受)
  • array_value_first() (拒绝)
  • array_value_last() (拒绝)

虽然外部数组的值函数被拒绝了, 至少有新函数可用于获取数组的外键。

被接受的获取数组键的新函数

首先,让我们看一下 array_key* 方法。这些方法允许你分别获取数组的第一个和最后一个键。

对于关联数组,下面代码片段有使用实例:

$array = ['a' => 1, 'b' => 2, 'c' => 3];

$firstKey = array_key_first($array);
$lastKey = array_key_last($array);

assert($firstKey === 'a');
assert($lastKey === 'c');

对于键为整数的数组:

$array = [1 => 'a', 2 => 'b', 3 => 'c'];

$firstKey = array_key_first($array);
$lastKey = array_key_last($array);

assert($firstKey === 1);
assert($lastKey === 3);

最后, 空数组方法将会返回 null

$array = [];

$firstKey = array_key_first($array);
$lastKey = array_key_last($array);

assert($firstKey === null);
assert($lastKey === null);

被拒绝的获取函数值的方法

我想再次强调一下,不接受数组值函数获得了 18 票,接受数组值函数获得了 15 票,因为投票原则是少数服从多数,所以函数值函数被拒绝了。

我打赌你几乎可以在不看任何例子情况下预测这些函数是如何工作,这对我来说真棒!

首先,让我看一下获取关联数组的第一个值和最后一个值的例子:

$array = ['a' => 1, 'b' => 2, 'c' => 3];

$firstValue = array_value_first($array);
$lastValue = array_value_last($array);

assert($firstValue === 1);
assert($lastValue === 3);

接下来,获取索引数组值的例子:

// usage of a numeric array
$array = [1 => 'a', 2 => 'b', 3 => 'c'];

$firstValue = array_value_first($array);
$lastValue = array_value_last($array);

assert($firstValue === 'a');
assert($lastValue === 'c');

最后,获取空数组值将会返回 null

$array = [];

$firstValue = array_value_first($array);
$lastValue = array_value_last($array);

assert($firstValue === null);
assert($lastValue === null);

我不是十分确定为什么投票会失败,但是从 GitHub 的评论中可以推测,其中一个原因可能是使用函数获取空数组的值将会返回 null ,这会引起歧义。

结论

让我感兴趣的是 PHP 从第七版开始并没有一种方法来做这些事情,即使值函数被拒绝了,还是很开心见到 array_key_first()array_key_last() 函数的接受和实现。

你可以了解更多关于 数组键 RFC 的知识并查看 GitHub 上的 arraykey* 函数的 PHP 7.3 实现

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/outer-array-fun...

译文地址:https://learnku.com/laravel/t/14766/the-...

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

原文链接打开是一张图片?

5年前 评论

这几个函数什么场景下会用到?

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!