重置索引为基于1的数组。

3

我有一个包含数据和键值[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
                                    )

                            )

我应该如何制作它?也许有某些功能可以做到这一点?我不想手动完成这个过程 - 这只是一个例子。


2
可能是重置PHP数组索引的重复问题。 - deceze
你在这里真正想做什么?我相信目标是重置键,从索引1开始。 - Jason McCreary
@deceze 不是完全重复。它将数组索引重置为1而不是2。这是一个很大的区别。 - Shiplu Mokaddim
你能以var_export格式发布数组吗?这样其他人就可以直接从你的数组中运行他们的测试代码了。 - DWright
4个回答

6

由于索引从1开始而不是从0开始,因此您需要使用range函数,并借助array_combine函数获得结果数组。

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

为了使其更加通用,您可以使用以下内容:
array_combine(range(1,count($array)),  array_values($array));

对于数据集来说,这是非常具体的内容,但仍然很有趣。 - Jason McCreary

5
$new_array = array_values($old_array);

3
注意他的索引从1开始。 - Jason McCreary
@JasonMcCreary 这就是我的答案修复的问题! - Shiplu Mokaddim

3

只需在开头添加一个元素,重新键入,然后将其移除。

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

我没有测试过,但应该可以做到。

2
一种方法是:
$newArray = array();
foreach($oldArray as $val):
    $newArray[] = $val; //add the value to the new array
endforeach;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接