4

私はポストを通過しました - php - array_fill 負のインデックス

PHP は、(-ive) start_index の後に 0 から開始する理由を明らかにしていませんが、既にインデックスが定義されている配列のインデックスから取得しようとすると、array_fill元の配列が消えてしまいます。-2-10

$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]未定義のオフセット エラーです。$a[0]ロジャーに上書きされます。

説明はありますか?? そして、同様の状況で将来のための作業のヒント.. !!

4

3 に答える 3

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 
)
于 2013-04-24T08:46:26.047 に答える
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);
于 2013-04-24T08:36:30.663 に答える
0

これが正しい方法です

$a = array('-1'=>'harry','0'=>'alex');  
$a = array_merge($a,array_fill(-2,4,'roger'));

print_r($a); 

アークキーを保持する必要がある場合

$a = array('-1'=>'harry','0'=>'alex');  
$b=array_fill('-2','4','roger');
    $a =  $a+ $b;

    print_r($a);
于 2013-04-24T08:37:06.267 に答える