JSON を配列として使用する場合は、2 番目の引数を true にして json_decode を呼び出す方がよいことはわかっていますが、PHP で への型キャストstdClass
を許可するarray
と、次のような問題が発生します。
<?php
$array = (array) json_decode('{"1":"1","2":"1","3":"1","4":"1","12":"1"}');
var_dump($array);
var_dump(array_key_exists('12', $array));
結果は次のようになります。
array(5) {
["1"]=>
string(1) "1"
["2"]=>
string(1) "1"
["3"]=>
string(1) "1"
["4"]=>
string(1) "1"
["12"]=>
string(1) "1"
}
bool(false)
また、私が作ろうとすると:
$array['12'] = 'X';
'12' は INT に型キャストされるため、var_dumping 時にキー 12 と '12' が配列に含まれます。理由を知っている人はいますか?
使用する必要があるとは言わないでくださいjson_decode(..., true)
-私はこれを本当に知っており、理解しています.PHPがどのように機能するか、およびオブジェクトを配列に型キャストすることを避けるべき(避けるべき)理由をよりよく理解するために、ここで何が起こっているのかを知りたいだけです.