作 ▸
PHPの配列のキーは負の数が使えてfloatとboolはintegerにキャストされてnullはカラ文字として扱われる
なんか思ってたより癖があったので書いておく
PHP 7.2.4
普通にマニュアルに載ってます
https://www.php.net/manual/ja/language.types.array.php#language.types.array.syntax
負の数はアリ
$arr = [];
$arr[1] = 'A';
$arr[0] = 'B';
$arr[-1] = 'C';
var_dump($arr);
array(3) {
[1]=>
string(1) "A"
[0]=>
string(1) "B"
[-1]=>
string(1) "C"
}
整数の文字列はintegerにキャストされる
03
は正しい整数の文字列として扱われないのでキャストされない
$arr = [];
$arr[1] = 'A';
$arr['1'] = 'AA';
$arr[0] = 'B';
$arr['0'] = 'BB';
$arr[-1] = 'C';
$arr['-1'] = 'CC';
$arr[03] = 'D';
$arr['03'] = 'DD';
var_dump($arr);
array(5) {
[1]=>
string(2) "AA"
[0]=>
string(2) "BB"
[-1]=>
string(2) "CC"
[3]=>
string(1) "D"
["03"]=>
string(2) "DD"
}
floatはintegerにキャストされる
$arr = [];
$arr[0] = 'A';
$arr[0.4] = 'B';
$arr['0.4'] = 'BB';
$arr[0.6] = 'C';
$arr['0.6'] = 'CC';
var_dump($arr);
array(3) {
[0]=>
string(1) "C"
["0.4"]=>
string(2) "BB"
["0.6"]=>
string(2) "CC"
}
boolはintegerにキャストされる
$arr = [];
$arr[true] = 'X';
$arr['true'] = 'XX';
$arr[false] = 'Y';
$arr['false'] = 'YY';
var_dump($arr);
array(4) {
[1]=>
string(1) "X"
["true"]=>
string(2) "XX"
[0]=>
string(1) "Y"
["false"]=>
string(2) "YY"
}
nullはカラ文字として扱われる
$arr[''] = 'Z';
$arr[null] = 'ZZ';
var_dump($arr);
array(1) {
[""]=>
string(2) "ZZ"
}