我只是使用array_filter从数组中删除只有值''的条目,现在我想根据从0开始的占位符对它应用某些转换,但不幸的是它仍然保留原始索引.我找了一会儿,看不到任何东西,也许我只是错过了明显的,但我的问题是......
如何轻松地重置数组的索引从0开始并按顺序在新数组中,而不是保留旧索引?
假设我有以下字符串:
5+6-5*3/2+4
Run Code Online (Sandbox Code Playgroud)
我需要将字符串拆分为两个数组:第一个数组包含整数,第二个数组包含字符串中的运算符.
我已经使用过这个preg_split()功能了
preg_split("/[^0-9]+/", $str)
Run Code Online (Sandbox Code Playgroud)
并已成功完成任务,但我被告知要使用explode()和implode()功能.我尝试使用它们,但现在我对如何使用它们获得所需的数组感到困惑.
从 PHP7.4 开始,有一种新的技术可以使用数字键重新索引数组。
我会称它为“数组重新打包”或者一些有趣的东西,比如“ splatpacking ”。简单的过程包括使用 splat 运算符 ( ...) —— 又名“扩展运算符”——来解包一个数组,然后通过“对称数组解构”用第一级元素填充一个新数组。
比较代码:(演示)
$array = [2 => 4, 5 => 3, "3" => null, -10.9 => 'foo'];
var_export(array_values($array));
var_export([...$array]);
Run Code Online (Sandbox Code Playgroud)
两者都会输出:
array (
0 => 4,
1 => 3,
2 => NULL,
3 => 'foo',
)
Run Code Online (Sandbox Code Playgroud)
同样,splatpacking 技术严格限于带有数字键的数组,因为 splat 运算符会阻塞其他任何东西,并且只有 PHP7.4 及更高版本才能将解压缩的值直接写入数组。
由于这两种技术在排位赛中提供相同的输出,我什么时候应该使用一种而不是另一种?
请注意,这不是关于如何重新索引键,而是array_values()与新可用技术的比较。
这不同于: