PHPの特性を比較的よく知っていても、次の奇妙な振る舞いは、今日でも私を混乱させました。
// loose
$a = array(true => 'foo');
var_dump(array_key_exists(1, $a));
// strict
$a = array('7.1' => 'foo');
var_dump(array_key_exists('7.10', $a));
この効果の技術的な理由は何でしょうか。問題は、この関数の背後にあるプロセスで、一部のタイプの値が大まかに比較され、他のタイプの値が厳密に比較される原因は何でしょうか。私はその振る舞いについて不平を言っているわけではありませんが、それを理解しようとしているので、「PHPはダメ」というコメントには意味がありません。