2014-05-15 73 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 
)