から変換した後、私は配列としてJSONを持つようにしたい場合は、本当のように第二引数でjson_decodeコールする方が良いことを知っているが、PHPはarray
に型キャストstdClass
を可能にし、この問題が起こる:array_key_existsはstdClass
<?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のキーがあります。誰も知っている理由は? 、私はちょうどここにボンネットの下に何が起こるかを知りたい、私は本当にこのことを知っていると理解し、より良いPHPがどのように機能するかを理解するために、なぜ私は(いけない -
私はjson_decode(..., true)
を使用する必要があることを言わないでください)オブジェクトを配列に型キャストしないでください。
http://stackoverflow.com/questions/4345554/convert-php-object-to-associative-array –