PHP移除数组的第一个索引并重新索引

22
我有一个像这样的数组 Array
(
    [0] => A
    [2] => B
    [4] => C
    [6] => D
)

我想移除数组的第一个元素,然后重新为数组编制索引以获取输出结果。

(
    [0] => B
    [1] => C
    [2] => D
)

我需要使用哪个PHP函数?


更新

输入的数组是

Array
(
    [0] => Array
        (
            [0] => Some Unwanted text
            [1] => You crazyy
        )

    [2] => Array
        (
            [0] => My belowed text
            [1] => You crazyy
        )

    [10] => Array
        (
            [0] => My loved quote
            [1] => You crazyy
        )

)

输出结果应该像这样

Array
(
    [0] => Array
        (
            [0] => My belowed text
            [1] => You crazyy
        )

    [1] => Array
        (
            [0] => My loved quote
            [1] => You crazyy
        )

)

你真的需要重新索引吗? - Your Common Sense
请使用var_export函数,以便更容易地进行测试。 - Matthew Flaschen
为什么要使用索引数组?使用foreach(),不需要再考虑索引。 - Your Common Sense
我需要使用foreach($myArray as $i=>$item)语句,然后使用$resultId = $offset+$i。 - Mithun Sreedharan
5个回答

36

我认为array_shift不会重新索引数组。 - lemon
@lemon:手册上说的不一样:“所有数字数组键将被修改为从零开始计数”。 - intuited
1
请参考更新的问题,如果传递数组的值再次是一个数组,则 array_shift 技巧无法正常工作。 - Mithun Sreedharan
Melmacian的array_splice答案似乎有效,有人尝试过吗? - Mithun Sreedharan
对于我来说(PHP 5.3.2,Ubuntu),它会输出所要求的更新后问题中的结果。 - Matthew Flaschen

28

1
需要省略第三个参数 array_splice($input, 0)。 - Mithun Sreedharan
3
使用array_splice($input, 1)函数,可以得到这个数组 ([0] => B, [1] => C, [2] => D),其中数字1表示起始索引。 - sayvortana
这非常完美,如果你想从函数返回实际的数组,这正是我所需要的。而不是使用 array_shift,因为其返回已移除元素,原因仅PHP开发人员知道?!? - superphonic

3
我们可以使用array_shift()来删除数组的第一个索引,然后使用array_values()重新索引数组值。如果没有从@User123的答案中获得,请尝试下面的方法:
<?php
    $array = array(
                0 => "A",
                2 => "B",
                4 => "C",
                6 => "D"
            );
    array_shift($array);
    $array = array_values($array);
    echo "<pre>";
    print_r($array);

输出: 在此处检查输出 https://eval.in/837709

Array
    (
        [0] => B
        [1] => C
        [2] => D
    )

同样适用于您更新的输入数组

<?php
    $array = array(
                    0 => array(
                            0 => "Some Unwanted text",
                            1 => "You crazyy"
                        ),

                    2 => array(
                            0 => "My belowed text",
                            1 => "You crazyy"
                        ),

                    10 => array(
                            0 => "My loved quote",
                            1 => "You crazyy"
                        )

                );
    array_shift($array);
    $array = array_values($array);
    echo "<pre>";
    print_r($array);

输出: 在这里检查输出 https://eval.in/837711

Array
(
    [0] => Array
        (
            [0] => My belowed text
            [1] => You crazyy
        )

    [1] => Array
        (
            [0] => My loved quote
            [1] => You crazyy
        )

)

2
你可以根据需要随意截取数组的索引。
$newArray = array_splice($oldArray, $startIndex, $lengthToSlice);

0
$array=array(
0 => 'A',
2 => 'B',
4 => 'C',
6 => 'D'
);

unset($array[0]);
$array = array_values($array);
print_r($array);

这也是使用 unset 解决此问题的另一种方法。

输出:

Array
(
    [0] => B
    [1] => C
    [2] => D
)

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