You're mixing keyed with keyless array entries, so it gets a bit wonky:
$list = array(
-10 => 1 // key is -10
=> 2 // no key given, use first available key: 0
=> 3 // no key given, use next available key: 1
"first_name" => "mike" // key provided, "first_name"
=> 4 // no key given, use next available: 2
=> 5 // again no key, next available: 3
10 => -2.3 // key provided: use 10
If you don't provide a key, PHP will assign one, starting at 0. If the potential new key would conflict with one already assigned, that potential key will be skipped until PHP finds one that CAN be used.