PHP trivia here.
If we declare an array like this:
<?php $arr = [ 'foo' => 'bar', NULL => 'hello' ]; ?>
We can access it like this
print $arr[NULL];
This will print hello
. Why is this useful, relevant or necessary? Is it a PHP bug or a feature?
My only idea was that you could declare array with the NULL key being equal to an error message to explain to anyone who uses a NULL key that their key is null:
$arr[NULL] = 'Warning you have used a null key, did you mean to?';
Has anyone found this useful? Seems to be something to cause more harm than good.
Quote from the manual:
Null will be cast to the empty string, i.e. the key
null
will actually be stored under""
.
Additional details about how keys are cast are as follows:
The key can either be an int or a string. The value can be of any type.
Additionally the following key casts will occur:
- Strings containing valid decimal ints, unless the number is preceded by a
+
sign, will be cast to the int type. E.g. the key"8"
will actually be stored under8
. On the other hand"08"
will not be cast, as it isn't a valid decimal integer.- Floats are also cast to ints, which means that the fractional part will be truncated. E.g. the key
8.7
will actually be stored under8
.- Bools are cast to ints, too, i.e. the key
true
will actually be stored under1
and the keyfalse
under0
.- Null will be cast to the empty string, i.e. the key
null
will actually be stored under""
.- Arrays and objects can not be used as keys. Doing so will result in a warning:
Illegal offset type
.
As for this being useful or necessary, this is debatable. You are asked to use integer or string keys and you have been warned about implicit key casting.