我有一个表格数组
$array = array(1 => 'a',
2 => 'b',
3 => 'c',
4 => 'd')
我想在2和3之间创建一个'洞',即获得以下数组
$array = array(1 => 'a',
2 => 'b',
4 => 'c',
5 => 'd')
你认为最好的方法是什么?
答案 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" }