Array keys must be integer or string. Working with an empty string as an array key is far from ideal practice.
Also, Null will be passed to an empty string, i.e. The null key will actually be stored under "".
But this approach makes your array ambiguous and unstable.
Consider the following examples:
$test = array ( '' => 'Select', 1 => 'Internal', 2 => 'External', '' => 'select' ); var_dump(array_key_exists('', $test));
The following case leads to ambiguity:
var_dump($test[""]); // output "select"
and the last example is an error (notification):
var_dump((object) $test); // output: object(stdClass)
source share