php-如何为数组重新索引?

我的数组如下所示:

array(
  0 => 'val',
  2 => 'val',
  3 => 'val',
  5 => 'val',
  7 => 'val'
);

如何重置密钥,使其像0, 1, 2, 3, 4

fxuser asked 2019-11-15T18:04:56Z
5个解决方案
124 votes

使用array_values:

$reindexed_array = array_values($old_array);
Emil Vikström answered 2019-11-15T18:05:20Z
14 votes
array_splice($old_array, 0, 0);

它不会对数组排序,也不会创建第二个数组

alekveritov answered 2019-11-15T18:05:45Z
11 votes

通过使用sort($array);

请参阅此处的PHP文档。

我建议使用$reindexed_array = array_values($old_array);而不是array_values,因为它不会创建第二个数组。 使用以下代码,您现在拥有两个占用空间的数组:$ reindexed_array和$ old_array。 不必要。

$reindexed_array = array_values($old_array);

Rawkode answered 2019-11-15T18:06:29Z
1 votes
array_splice($jam_array, 0, count($jam_array));

要对缺少中间索引的数组进行排序,使用count的顺序会更安全。 因此0是第一个索引,count($jam_array)sizeof($jam_array)返回数组的小数位,即最后一个索引。

fvlgnn answered 2019-11-15T18:06:55Z
0 votes

从PHP7.4开始,您可以通过使用splat运算符将值解压缩到数组中而无需函数调用即可重新索引。 将此视为“重新打包”。

代码:(演示)

$array = array(
  0 => 'val',
  2 => 'val',
  3 => 'val',
  5 => 'val',
  7 => 'val'
);

$array = [...$array];

var_export($array);

输出:

array (
  0 => 'val',
  1 => 'val',
  2 => 'val',
  3 => 'val',
  4 => 'val',
)

注意:此技术不适用于关联键(splat运算符会扼杀这些键)。 非数字演示

损坏被报告为无法解包字符串键,但是更准确地说,键必须全部为数字。 整数作为字符串演示和Float演示

mickmackusa answered 2019-11-15T18:07:42Z
translate from https://stackoverflow.com:/questions/11224821/how-to-reindex-an-array