我经历了这个帖子 - php - array_fill negative indices
PHP肯定没有说明为什么它从(-ive)start_index之后的0开始,但是,但是,如果我从array_fill
索引尝试-2
已经有{{1}的数组1}}和-1
索引已定义,原始数组消失。
0
输出
$a = array('-1'=>'harry','0'=>'alex');
$a = array_fill(-2,4,'roger');
print_r($a);
和Array ( [-2] => Roger [0] => Roger [1] => Roger [2] => Roger )
是未定义的偏移量错误。 $a[-1]
被覆盖到罗杰。
任何解释?对于类似情况的未来工作提示.. !!
答案 0 :(得分:1)
来自array_fill
手册:
如果start_index为负数,则返回数组的第一个索引为start_index,后面的索引将从零开始(参见示例)。
<?php
$a = array_fill(5, 6, 'banana');
$b = array_fill(-2, 4, 'pear');
print_r($a);
print_r($b);
?>
输出:
Array
(
[5] => banana
[6] => banana
[7] => banana
[8] => banana
[9] => banana
[10] => banana
)
Array
(
[-2] => pear
[0] => pear
[1] => pear
[2] => pear
)
所以你的输出是正确的。接下来就是你省略了第一个数组。你应该尝试:
$a = array(-1 => 'harry', 0 => 'alex');
$a = array_merge(array_fill(-2, 4, 'roger'), $a);
ksort($a);
答案 1 :(得分:1)
您可以尝试array_replace
$a = array('-1'=>'harry','0'=>'alex');
$b = array_fill(-2, 4, 'Roger');
$c = array_replace($b, $a);
ksort($c);
print_r($c);
输出
Array
(
[-2] => Roger
[-1] => harry
[0] => alex
[1] => Roger
[2] => Roger
)
答案 2 :(得分:0)
这是正确的方法
$a = array('-1'=>'harry','0'=>'alex');
$a = array_merge($a,array_fill(-2,4,'roger'));
print_r($a);
如果必须保留arrk键
$a = array('-1'=>'harry','0'=>'alex');
$b=array_fill('-2','4','roger');
$a = $a+ $b;
print_r($a);