php数组中删除元素

之前如果要在某个数组中删除一个元素,我是直接用的unset,也不管unset之后会发生什么。但今天看到的东西却让我大吃一惊

<?php  
$arr = array('aaaa','bbbb','cccc','dddd');  
unset($arr[1]);  
print_r($arr);  
?> 

print_r($arr)之后,结果却不是那样的,最终结果是 Array ( [0] => a [2] => c [3] => d )

那么怎么才能做到缺少的元素会被填补并且数组会被重新索引呢?答案是array_splice():

<?php  
$arr = array('aaaa','bbbb','cccc','dddd');  
array_splice($arr,1,1);  
print_r($arr); 
?>

ps: array_splice第一个是原数组,第二个参数删除第几个键(从0开始),第三个参数是删除几个

print_r($arr)之后,结果是Array ( [0] => a [1] => c [2] => d )

实际应用

$arr = array('aaaa','bbbb','cccc','dddd');
unset($arr[1]);
sort($arr);
echo json_encode($arr);


或者


$arr = array('aaaa','bbbb','cccc','dddd');
array_splice($arr,1,1);
echo json_encode($arr);
或者
$arr = array('aaaa','bbbb','cccc','dddd');
unset($arr[1]);
array_values($arr);
echo json_encode($arr);