In php The key is optional. If it is not specified, PHP will use the increment of the largest previously used integer key
Like if :-
$a = array( 1 => 'One', 3, 3 => 'Two');
var_dump($a);
output will :-
array(3) {
[1]=>
string(3) "One"
[2]=>
int(3)
[3]=>
string(3) "Two"
}
Here for second value one is increment from previous value i.e 2.
Now
say array is :-
$a = array( '1' => 'One', '3', '3' => 'Two');
var_dump($a);
Output will
array(3) {
[1]=>
string(3) "One"
[2]=>
string(1) "3"
[3]=>
string(3) "Two"
}
Here also Here for second value one is increment from previous value i.e 2.
Now third case:-
If array is :-
$a = array( '1' => 'One', '1' => 'two' , '1' => 'Three');
var_dump($a);
Output will:-
array(1) {
[1]=>
string(5) "Three"
}
This is because associative array keep value as map and if key is present it overwrite value in this case 1 is overwrite 2 time as a result out is three
In your case :-
$a = array( '1' => 'One', '3', '2' => 'Two');
print_r($a);
Output is
Array
(
[1] => One
[2] => Two
)
this is because :-
first key map will:-
'1' => 'one'
again
php will keep second value as
'2' => '3'
Now as in array '2' is assigned as 'Two', value become
'2' => 'Two'
which means it is overwriting.