array_push没有键修改?

时间:2013-08-30 18:28:40

标签: php arrays

例如,如果我有$a=array('a','b','c','d')并生成unset($a[0]),则数组变为

Array
(
[1] => b
[2] => c
[3] => d
)

如果我$a[]='e',则此数组变为

Array
(
[0] => b
[1] => c
[2] => d
[3] => e
)

(重置密钥)

但我需要它看起来像

Array
(
[1] => b
[2] => c
[3] => d
[4] => d
)

如果有可能的话,如何以最少的代码实现这一目标呢?

修改

抱歉,伙计们

我的代码中间有array_splice()。对不起我的尴尬问题

1 个答案:

答案 0 :(得分:1)

如果你找不到有用的简单$arr[] =方法,我相信这是完成你正在做的事情的足够最少的代码

<?php

$arr = array('b','c','d');

unset($arr[0]);

end($arr);
$arr[key($arr)+1] = 'e';

var_dump($arr);

?>

请注意,只有在您知道此数组只使用数字键时才会有效。

替代方式是

$arr[end(array_keys($arr))+1] = 'e';

而不是

end($arr);
$arr[key($arr)+1] = 'e';