如何在 PHP 中重新索引数组但索引从 1 开始?

新手上路,请多包涵

我有以下数组,我想重新索引,以便键反转(理想情况下从 1 开始):

当前数组( 编辑: 数组实际上看起来像这样):

 Array (

[2] => Object
    (
        [title] => Section
        [linked] => 1
    )

[1] => Object
    (
        [title] => Sub-Section
        [linked] => 1
    )

[0] => Object
    (
        [title] => Sub-Sub-Section
        [linked] =>
    )

)

应该如何:

 Array (

[1] => Object
    (
        [title] => Section
        [linked] => 1
    )

[2] => Object
    (
        [title] => Sub-Section
        [linked] => 1
    )

[3] => Object
    (
        [title] => Sub-Sub-Section
        [linked] =>
    )

)

原文由 meleyal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 468
2 个回答

如果要从零开始重新索引,只需执行以下操作:

 $iZero = array_values($arr);

如果您需要从一个开始,请使用以下命令:

 $iOne = array_combine(range(1, count($arr)), array_values($arr));

以下是所使用功能的手册页:

原文由 Andrew Moore 发布,翻译遵循 CC BY-SA 2.5 许可协议

我能想到的最快的方法

array_unshift($arr, null);
unset($arr[0]);
print_r($arr);

如果你只想重新索引数组(从零开始)并且你有 PHP +7.3 你可以这样做

array_unshift($arr);

我相信 array_unshift 优于 array_values 因为前者不会创建数组的副本。

变更日志

版本描述7.3.0现在可以仅使用一个参数调用此函数。以前,至少需要两个参数。

-- https://www.php.net/manual/en/function.array-unshift.php#refsect1-function.array-unshift-changelog

原文由 Rain 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题