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

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 实现


Practice makes perfect.

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

译文地址:https://laravel-china.org/topics/14766/t...

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 2
Nick

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

2个月前

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

2个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!