php - array_fill negative indices

php

Solution

Looking at the source for PHP, I can see exactly why they did this!

What they do is create the first entry in the array. In PHP, it looks like:

$a = array(-4 => 10);

Then, they add each new entry like this:

$count--;
while ($count--) {
  $a[] = 10;
}

If you do this exact same thing yourself, you'll see the exact same behavior. A super short PHP script demonstrates this:

<?php
    $a = array(-4 => "Apple");
    $a[] = "Banana";
    print_r($a);
?>

The result: `Array ( [-4] => Apple [0] => Banana )`

NOTE Yes, I did put in PHP instead of the C source they used, since a PHP programmer can understand that a lot better than the raw source. It's approximately the same effect, however, since they ARE using the PHP functions to generate the results...

Problem

When using `php` array_fill and negative indices, why does `php` only fill the first negative indice and then jump to 0. For example: `array_fill(-4,4,10)` should fill `-4, -3, -2, -1` and `0` but it does `-4, 0, 1, 2, 3` The manual does state this behaviour but not why. Can anyone say why this is?

Original source