我有一个数组,它可能包含数字键或关联键,或两者兼有:
$x = array('a', 'b', 'c', 'foo' => 'bar', 'd', 'e');
print_r($x);
/*(
[0] => a
[1] => b
[2] => c
[foo] => bar
[3] => d
[4] => e
)*/
我希望能够从数组中删除一个项目,重新编号非关联键以保持它们的顺序:
$x = remove($x, "c");
print_r($x);
/* desired output:
(
[0] => a
[1] => b
[foo] => bar
[2] => d
[3] => e
)*/
找到要删除的正确元素不是问题,问题在于键。unset
不会对键重新编号,而是array_splice
在offset上工作,而不是在 key 上工作(即:从第一个示例中获取 $x,array_splice($x, 3, 1)
将删除“bar”元素而不是“d”元素)。