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

Posted

技术标签:

【中文标题】PHP删除数组的第一个索引并重新索引【英文标题】:PHP remove the first index of an array and re-index 【发布时间】:2011-03-01 12:03:49 【问题描述】:

我有一个类似的数组 数组

(
    [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
        )

)

【问题讨论】:

你真的需要重新索引吗? 请使用var_export,这样更容易测试。 有什么用?索引数组有什么用?使用foreach() 并忘记索引 我需要使用 foreach($myArray as $i=>$item) 然后使用 $resultId = $offset+$i 【参考方案1】:

你可以使用

array_shift($array)

Documentation for array_shift

【讨论】:

我不认为 array_shift 会重新索引数组 @lemon:手册另有说明:All numerical array keys will be modified to start counting from zero 请查看更新后的问题,如果传递数组的值再次是数组,array_shift 技巧将不起作用 Melmacian 对 array_splice 的回答似乎有效,有人试过吗? 对我来说(PHP 5.3.2,Ubuntu),它给出了更新问题中要求的输出。【参考方案2】:

使用 array_splice。

http://www.php.net/manual/en/function.array-splice.php

php > print_r($输入); 大批 ( [0] => 一个 [2] => 乙 [4] => C [6] => D ) php > array_splice($input, 0, 1); php > print_r($输入); 大批 ( [0] => 乙 [1] => C [2] => D )

【讨论】:

需要省略第三个参数array_splice($input, 0) 使用array_splice($input, 1); // 1 是获取这个数组的起始索引 ([0] => B, [1] =>C, [2] => D) 如果您想要从函数返回的实际数组,这是我所需要的,这是完美的。而不是使用 array_shift 来返回删除的元素,原因只有 PHP 开发人员知道?!?【参考方案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
        )

)

【讨论】:

【参考方案4】:

您可以根据需要剪切数组任意多个索引

$newArray = array_splice($oldArray, $startIndex, $lengthToSlice);

【讨论】:

【参考方案5】:
$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
)

【讨论】:

以上是关于PHP删除数组的第一个索引并重新索引的主要内容,如果未能解决你的问题,请参考以下文章

php删除二维数组的空值并重新建立数字索引

在 C# 中查找子数组的第一个出现/起始索引

如何在 JQuery 中添加和删除数组而不重新索引数组键

php 数组索引值如何重新从0开始递增

取消设置操作后将PHP数组索引重置为从0开始[重复]

合并两个多维数组并重新索引所有子数组