PHP数组键重新排序

fxu*_*ser 55 php arrays

我的数组看起来像这样:

array(
  0 => 'val',
  2 => 'val',
  3 => 'val',
  5 => 'val',
  7 => 'val'
);
Run Code Online (Sandbox Code Playgroud)

如何重新排序按键以便它会像0, 1, 2, 3, 4

Emi*_*röm 127

使用array_values:

$reindexed_array = array_values($old_array);
Run Code Online (Sandbox Code Playgroud)

  • @Rodrigo 因为对于大多数 PHP 开发人员来说,CPU 核心比内存更昂贵(我们所有的 FPM 服务器上都有千兆字节的未使用 RAM)。我们大多数人都从事网络开发,响应时间很重要。我的答案更快并且使用更少的CPU。我的答案也更优雅,因为它回答了原来的问题,没有其他副作用。如果您不同意这一点,那很好,但您对手机的咆哮似乎非常不公平,因为我是真正关心性能的人之一。我只是说在 O(n) 时间内创建一个新数组比在 O(n log n) 时间内对其进行排序性能更高。 (3认同)

小智 14

array_splice($old_array, 0, 0);
Run Code Online (Sandbox Code Playgroud)

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


Raw*_*ode 11

通过使用 sort($array);

请参阅此处的 PHP文档.

我建议sort结束,array_values因为它不会创建第二个数组.使用以下代码,您现在有两个占用空间的数组:$ reindexed_array和$ old_array.不必要.

$reindexed_array = array_values($old_array);

  • 是的,`sort`可能有效,但速度较慢,特别是对于大型数组(内存很重要). (2认同)
  • 只要值尚未按升序排列,这个答案就会是错误的。它不应该有 11 票赞成——这只是因为问题中发布的场景而正确。 (2认同)