2012-07-22 40 views
6
$array = array('a', 'b','c'); 
unset($array[0]); 
var_dump($array); 

Yields: 
array(1) { 
    [1]=> 
    'b' 
    'c' 
} 

如何,删除阵列[0]获得[ 'BB', 'CC'(无空键):如何从数组中删除键和更新索引?

array(1) { 
    'b' 
    'c' 
} 
+0

array_values()设定解除后,将工作 – 2012-07-23 00:01:10

回答

18

检查:

$array = array('a', 'b','c'); 
unset($array[0]); 
$array = array_values($array); //reindexing 
13

array_splice()

$array = array_splice($array, 0, 1); 

看看如果你碰巧正在移除第一个元素(而不是数组中间的任意元素),array_shift()更合适。

+0

+1,比'未设置/ array_values'组合更好的选择。 – 2012-07-23 00:15:55

+0

为什么这是比unset/array_values更好的选择?速度? – Bashevis 2014-02-14 03:37:10

+1

@Bashevis:有速度优势,是的。可以说更重要的是:它更干净更清晰。 'array_slice()'旨在完成这件事。毫无疑问,当你看到这个函数调用时会发生什么。 '未设置(); array_values();'完成相同的事情,但是在两个单独的步骤中完成,这迫使读者计算出后果 - 即找出这是一个执行'array_slice()'的方法。 – VoteyDisciple 2014-02-14 20:04:54