PHP 认为 P == 0

标签 php types conditional

<分区>

这绝对是疯狂的。我今天正在测试一个应该始终评估为单个字符的 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...

最佳答案

来自 PHP documentation :

If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically.

关于PHP 认为 P == 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14486877/

相关文章:

conditional - 你如何在 react-admin 中有条件地显示 "Show"组件中的字段?

c - 保证 C 中 (void*) 数组中的精确数据宽度

java - 我可以在 Java 或 Scala 中定义这些类型吗?

php - 如何选择在过去 2 小时内或根本没有使用 Mysql 更新分数的用户

php - 生成两个随机数第一个数字小于第二个php

标量范围返回Long而不是Int

python - 你如何在条件语句中使用 OR 和 AND?

makefile - Solaris 10 Makefile 中条件的语法是什么?

PHP 日志 : Warning format

javascript - 将选项 ID 值传递给 Controller ​​并通过 onclick 从另一个 Blade View 检索