在数组中创建一个洞

时间:2013-11-08 14:39:49

标签: php arrays

我有一个表格数组

$array = array(1 => 'a',
               2 => 'b',
               3 => 'c',
               4 => 'd')

我想在2和3之间创建一个'洞',即获得以下数组

$array = array(1 => 'a',
               2 => 'b',
               4 => 'c',
               5 => 'd')

你认为最好的方法是什么?

6 个答案:

答案 0 :(得分:4)

这应该有效:

function array_drill_hole($input, $start, $end) {
    array_splice($input, $start, $end - $start, null);
    return $input;
}

答案 1 :(得分:2)

$array = array_combine(array_merge(range(1, 2), range(4, 5)), $array);

答案 2 :(得分:1)

define("N", 3);

$i = count($array);
while ($i >= N) {
   $array[$i+1] = $array[$i];
   $i--;
}
unset ($array[ N ]);

或等效的 for 版本

define("N", 3);

for($i=count($array) ; $i >= N ; $i--) {
   $array[$i+1] = $array[$i];
}
unset ($array[ N ]);

答案 3 :(得分:0)

我想加入:http://codepad.org/9JDGHxhK

array_splice($array, 2, 0, "");

return array_filter($array);

答案 4 :(得分:0)

这是一个经过测试的完整解决方案:

function makeHole($index,$holeArr) {
            $returnArr = array();
            $increaseFlag = false;
            foreach ($holeArr as $ind => $val) {
                if ($ind == $index || $increaseFlag) {
                    $increaseFlag = true;
                    $returnArr[$ind+1] = $val;
                } else {
                    $returnArr[$ind] = $val;
                }
            }
            return $returnArr;
        }

        $array = array(1 => 'a',
            2 => 'b',
            3 => 'c',
            4 => 'd');
        $result = makeHole(3,$array);
        echo '<pre>';
        print_r($result);
        echo '</pre>';

答案 5 :(得分:0)

$array = array(1 => 'a',
               2 => 'b',
               3 => 'c',
               4 => 'd');
array_splice($array, 2, 0, " ");
array_splice($array, 3, 0, " ");
unset($array[3]);
unset($array[2]);

var_dump($array);

输出:

array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [4]=> string(1) "c" [5]=> string(1) "d" }