2014-05-15 43 views
0

这里是我的数组:插入和删除阵列和正在重置项键值

$array = array(
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
    3 => 'd', 
    4 => 'e', 
    5 => 'f', 
); 

现在,我想在3删除项目 - unset($array[3]) - 但是这就是结果:

$array = array(
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
    4 => 'e', 
    5 => 'f', 
); 

但我想要看起来像这样:

$array = array(
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
    3 => 'e', 
    4 => 'f', 
); 

与插入相似3 - $array[3] = 'g' - 我也想造成这个样子:

$array = array(
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
    3 => 'g', 
    4 => 'd', 
    5 => 'e', 
    6 => 'f' 
); 

如何才能做到这一点?

+0

我发布了一个答案,但后来我意识到你还没有发布你的尝试。 [你有什么尝试?](http://mattgemmell.com/2008/12/08/what-have-you-tried/)请参阅[关于堆栈溢出](http://stackoverflow.com/about)。 –

回答

0

只要使用array_values()为“重新输入”的阵列:

$array = array(
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
    3 => 'd', 
    4 => 'e', 
    5 => 'f', 
); 
unset($array[3]); 
$array = array_values($array); 

Demo

对于第二部分只拆分要在其中添加新值的阵列,并以第一部分,然后再次将您的阵列重新合并在一起。

$array = array(
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
    3 => 'd', 
    4 => 'e', 
    5 => 'f', 
); 

$key = 3; 
$first_part = array_slice($array, 0, $key); 
$second_part = array_slice($array, $key); 
$first_part[] = 'g'; 
$array = array_merge($first_part, $second_part); 

Demo

0

所以如果你使用array_values这样的:

$array = array_values($array); 

这里,它是在代码:

$array = array(
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
    3 => 'd', 
    4 => 'e', 
    5 => 'f', 
); 

unset($array[3]); 

$array = array_values($array); 

echo '<pre>'; 
print_r($array); 
echo '</pre>'; 

输出将是:

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