【问题标题】:Reset indexes to 1-based array将索引重置为基于 1 的数组
【发布时间】:2013-01-18 15:47:59
【问题描述】:

我有一个包含数据和键 [1, 2, 4, 5] 的数组。

$array = xxxx;

这是:

                       [array] => Array
                            (
                                [1] => Array
                                    (
                                        [test] => fdasdfs24
                                    )

                                [2] => Array
                                    (
                                        [test] => fdasdf23
                                    )

                                [4] => Array
                                    (
                                        [test] => fdasdf4
                                    )

                                [5] => Array
                                    (
                                        [test] => fdasdf34
                                    )

                            )

如何重置这个和数组中的索引?我想收到:[1, 2, 3, 4]

                       [array] => Array
                            (
                                [1] => Array
                                    (
                                        [test] => fdasdfs24
                                    )

                                [2] => Array
                                    (
                                        [test] => fdasdf23
                                    )

                                [3] => Array
                                    (
                                        [test] => fdasdf4
                                    )

                                [4] => Array
                                    (
                                        [test] => fdasdf34
                                    )

                            )

我该怎么做?也许是为了这个功能?我不想手动执行此操作 - 这只是示例。

【问题讨论】:

  • Reset PHP Array Index 的可能重复项
  • 真的想在这里做什么?我相信目标是重置键,从索引 1 开始。
  • @deceze 不,它不完全重复。它将数组索引重置为 1 而不是 2。这是一个很大的不同。
  • 您能以 var_export 格式发布数组吗?这样其他人就可以直接从您的数组中运行他们的测试代码。

标签: php arrays


【解决方案1】:

当索引从 1 开始而不是 0 时,您需要使用 range 函数并在 array_combine 的帮助下获得结果数组。

array_combine(range(1,4),  array_values($array));

为了使其更通用,您可以使用它,

array_combine(range(1,count($array)),  array_values($array));

【讨论】:

  • + 表示有趣。尽管对数据集非常具体
【解决方案2】:
$new_array = array_values($old_array);

【讨论】:

  • 注意他的索引从 1 开始。
  • @JasonMcCreary 这就是我的答案所修复的!
【解决方案3】:

只需在开头添加一个元素,重新设置密钥,然后将其关闭。

$array = array_values(array_unshift($array, 'blank'));
unset($array[0]);

我没有测试它,但应该这样做。

【讨论】:

    【解决方案4】:

    一种方法是:

    $newArray = array();
    foreach($oldArray as $val):
        $newArray[] = $val; //add the value to the new array
    endforeach;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多