即使比较了解 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 糟透了”的评论毫无意义。