【问题标题】:PHP remove the first index of an array and re-indexPHP删除数组的第一个索引并重新索引
【发布时间】: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

标签: php arrays filter sorting


【解决方案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
      )
      

      【讨论】:

        猜你喜欢
        • 2020-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-24
        • 1970-01-01
        • 2015-04-09
        • 2012-10-25
        • 1970-01-01
        相关资源
        最近更新 更多