这是绝对的疯狂。我今天正在测试一个应该始终评估为单个字符的 post 变量。示例代码是...
if($_POST['status'] == '' || $_POST['status'] == 0){ die('oh no!'); }
如果我传递 P 的状态,它正在执行 die 语句。然后,我使用以下代码创建了一个 PHP 文件...
echo 'P1: '.intval($_POST['status']=='').'<br />';
echo 'P2: '.intval($_POST['status']==0).'<br />';
echo 'P3: '.intval('P'==0).'<br />';
你猜怎么了?P2 和 P3 都评估为 TRUE。intval 只是为了在 P1 上显示 0 而不是什么都没有。
这是 PHP 的已知错误吗?这只是我正在运行的版本上的问题吗?坦率地说,我完全不知道它为什么这样做。它使用三等式正确评估,但不是双等式。在我的书中,P 绝对不等于 0...