使用array_fill php消除数组索引

时间:2013-04-24 08:33:28

标签: php arrays

我经历了这个帖子 -     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]被覆盖到罗杰。

任何解释?对于类似情况的未来工作提示.. !!

3 个答案:

答案 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);