Answers:
unset($foo[0]); // remove item at index 0
$foo2 = array_values($foo); // 'reindex' array
unset($foo[0], $foo[3], $bar[1]);
array_splice
,但不适用于第0个和第1个索引。
你最好用array_shift()
。这将返回数组的第一个元素,将其从数组中删除并重新索引数组。一种有效的方法。
array_pop()
如果需要,它的对应函数将检索并删除最后一个数组元素。但是,两个函数都不能作用于数组中间的元素。
array_splice($array, array_search(array_value, $array), 1);
Unset($array[0]);
Sort($array);
我不知道为什么要拒绝这样做,但是如果有人不愿意尝试它,您会注意到它可行。在数组上使用sort会重新分配数组的键。唯一的缺点是它对值进行排序。由于显然可以重新分配键,即使使用array_values
,也可以对值进行排序与否。
除了xzyfer的答案
功能
function custom_unset(&$array=array(), $key=0) {
if(isset($array[$key])){
// remove item at index
unset($array[$key]);
// 'reindex' array
$array = array_values($array);
//alternatively
//$array = array_merge($array);
}
return $array;
}
用
$my_array=array(
0=>'test0',
1=>'test1',
2=>'test2'
);
custom_unset($my_array, 1);
结果
array(2) {
[0]=>
string(5) "test0"
[1]=>
string(5) "test2"
}
如果使用array_merge
,这将为索引重新编制索引。手册指出:
使用数字键的输入数组中的值将使用从结果数组中的零开始的递增键重新编号。
http://php.net/manual/zh/function.array-merge.php
这是我找到原始答案的地方。
http://board.phpbuilder.com/showthread.php?10299961-Reset-index-on-array-after-unset()