【问题标题】:What is an easy way to put an element in the middle of a PHP array?将元素放在 PHP 数组中间的简单方法是什么?
【发布时间】:2009-03-06 22:33:22
【问题描述】:

假设您有一个包含 10 个元素的索引数组,并且您想在中间的某个位置放置一个元素(例如索引 3)。然后我想让数组的其余部分移位,因此长度为 11 个元素。有没有简单的方法可以做到这一点?

我很惊讶没有 put() 函数或其他东西。

我知道结合使用 array_splicearray_merge 会很容易做到这一点,但我只是想知道是否有更简单的方法。

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    array_splice() does this

    $input = array("red", "green", "blue", "yellow");
    array_splice($input, 3, 0, "purple");
    // $input is now array("red", "green", "blue", "purple", "yellow");
    

    【讨论】:

    • 谢谢……这就是我问的原因……(从阅读文档中看不太明显)
    【解决方案2】:

    不幸的是,您最好的选择是您在帖子中描述的内容。

    【讨论】:

      【解决方案3】:

      如果您使用 array_splice(),PHP 仍然需要复制一半的数组来执行插入,这将对大数组大小造成性能影响。也许您应该改用列表或树数据结构?

      我唯一需要插入到数组中间的一次是在我执行一些与插入排序基本相似的操作时。也许您想将未排序的项目存储在一个数组中,然后在将它们全部添加后对它们进行排序?

      【讨论】:

        【解决方案4】:

        目前没有 PHP 函数可以处理这个问题。然而,自己动手并不难:

        function array_insert(&$array, $insert, $position) {
            $c = count($array);
            $slice = array_merge($insert, array_slice($array, $position));
            array_splice($array, $position, $c, $slice);
        }
        
        $array = array('a','b','d','e');
        print_r($array);
        array_insert($array, array('c'), 2);
        print_r($array);
        

        将导致:

        Array
        (
            [0] => a
            [1] => b
            [2] => d
            [3] => e
        )
        Array
        (
            [0] => a
            [1] => b
            [2] => c
            [3] => d
            [4] => e
        )
        

        如果位置大于数组,插入不是数组等,您可能可以添加检查。

        【讨论】:

          猜你喜欢
          • 2011-08-30
          • 1970-01-01
          • 1970-01-01
          • 2012-04-11
          • 2011-04-06
          • 2016-09-04
          • 2014-06-03
          • 1970-01-01
          • 2012-08-23
          相关资源
          最近更新 更多