Для полноты картины стоит отметить, что это просто функция PhpStorm, предупреждающая о потенциальных ошибках. Сам PHP, будучи свободно типизированным языком, не жалуется и не заботится о типах ключей массива , пока они скаляры , и просто приведёт к правильному типу:
var_dump([
2.0 => 'Red',
3.1 => 'Green',
'Kittens' => 'Blue',
]);
class Foo
{
public function __toString()
{
return 'bar';
}
}
var_dump([
(string)new Foo() => 'This is valid too',
]);
var_dump([
new Foo() => 'Invalid key', // Warning: Illegal offset type
range(1, 2) => 'Invalid key', // Warning: Illegal offset type
new Datetime() => 'Invalid key', // Warning: Illegal offset type
]);
array(3) {
[2]=>
string(3) "Red"
[3]=>
string(5) "Green"
["Kittens"]=>
string(4) "Blue"
}
array(1) {
["bar"]=>
string(17) "This is valid too"
}
array(0) {
}
Демо