从 PHP7.4 开始,有一种新的可用技术可以用数字键重新索引数组。
我将其称为“数组重新打包”,或者可能是一些有趣的东西,例如“ splatpacking ”。简单的过程涉及使用 splat 运算符 ( ...
) - 也称为“扩展运算符” - 解包一个数组,然后通过“对称数组解构”用第一级元素填充一个新数组。
比较代码:(演示)
$array = [2 => 4, 5 => 3, "3" => null, -10.9 => 'foo'];
var_export(array_values($array));
var_export([...$array]);
两者都会输出:
array (
0 => 4,
1 => 3,
2 => NULL,
3 => 'foo',
)
同样,splatpacking 技术严格限制于带有数字键的数组,因为 splat 运算符会阻塞其他任何内容,并且只能从 PHP7.4 及更高版本中将解压后的值直接写入数组。
由于两种技术在排位赛情况下提供相同的输出,我什么时候应该使用一种而不是另一种?
请注意,这不是关于如何重新索引键,而是array_values()
与新可用技术的比较。
这不同于:
以及其他数十个询问如何重新索引数组的旧页面。