如果语句评估错误条件 PhP


If statement evaluating false condition PhP

出于某种原因,我的条件语句在计算 false 时不是

$file_check=strpos(file_get_contents("database/file_register.txt"),basename($_FILES["fileToUpload"]["name"]));
echo "file=$file_check"; '' equals 0 -> which is not False.
if(isset($_POST["submit"]) && ($file_check == False)) {$file_check='ok';}
else{echo "The document is already in use.";}
echo "file=$file_check"; '' now it equals 'ok'

您的条件是检查0 == False是否为真

确保设置submit

PHP 类型比较表

$x与PHP函数的比较

+------------------+------------+----------+------------+----------+------------------+
|   Expression     | gettype()  | empty()  | is_null()  | isset()  | boolean : if($x) |
+------------------+------------+----------+------------+----------+------------------+
| $x = "";         | string     | TRUE     | FALSE      | TRUE     | FALSE            |
| $x = null;       | NULL       | TRUE     | TRUE       | FALSE    | FALSE            |
| var $x;          | NULL       | TRUE     | TRUE       | FALSE    | FALSE            |
| $x is undefined  | NULL       | TRUE     | TRUE       | FALSE    | FALSE            |
| $x = array();    | array      | TRUE     | FALSE      | TRUE     | FALSE            |
| $x = false;      | boolean    | TRUE     | FALSE      | TRUE     | FALSE            |
| $x = true;       | boolean    | FALSE    | FALSE      | TRUE     | TRUE             |
| $x = 1;          | integer    | FALSE    | FALSE      | TRUE     | TRUE             |
| $x = 42;         | integer    | FALSE    | FALSE      | TRUE     | TRUE             |
| $x = 0;          | integer    | TRUE     | FALSE      | TRUE     | FALSE            |
| $x = -1;         | integer    | FALSE    | FALSE      | TRUE     | TRUE             |
| $x = "1";        | string     | FALSE    | FALSE      | TRUE     | TRUE             |
| $x = "0";        | string     | TRUE     | FALSE      | TRUE     | FALSE            |
| $x = "-1";       | string     | FALSE    | FALSE      | TRUE     | TRUE             |
| $x = "php";      | string     | FALSE    | FALSE      | TRUE     | TRUE             |
| $x = "true";     | string     | FALSE    | FALSE      | TRUE     | TRUE             |
| $x = "false";    | string     | FALSE    | FALSE      | TRUE     | TRUE             |
+------------------+------------+----------+------------+----------+------------------+

== VS ===

  • 松散比较仅考虑值。
  • 严格比较考虑了值和类型

==的松散比较

    +----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+----------+--------+-------+
    |          | TRUE   | FALSE  |   1    |   0    |  -1    |  "1"   |  "0"   | "-1"   | NULL   | array()  | "php"  |  ""   |
    +----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+----------+--------+-------+
    | TRUE     | TRUE   | FALSE  | TRUE   | FALSE  | TRUE   | TRUE   | FALSE  | TRUE   | FALSE  | FALSE    | TRUE   | FALSE |
    | FALSE    | FALSE  | TRUE   | FALSE  | TRUE   | FALSE  | FALSE  | TRUE   | FALSE  | TRUE   | TRUE     | FALSE  | TRUE  |
    | 1        | TRUE   | FALSE  | TRUE   | FALSE  | FALSE  | TRUE   | FALSE  | FALSE  | FALSE  | FALSE    | FALSE  | FALSE |
    | 0        | FALSE  | TRUE   | FALSE  | TRUE   | FALSE  | FALSE  | TRUE   | FALSE  | TRUE   | FALSE    | TRUE   | TRUE  |
    | -1       | TRUE   | FALSE  | FALSE  | FALSE  | TRUE   | FALSE  | FALSE  | TRUE   | FALSE  | FALSE    | FALSE  | FALSE |
    | "1"      | TRUE   | FALSE  | TRUE   | FALSE  | FALSE  | TRUE   | FALSE  | FALSE  | FALSE  | FALSE    | FALSE  | FALSE |
    | "0"      | FALSE  | TRUE   | FALSE  | TRUE   | FALSE  | FALSE  | TRUE   | FALSE  | FALSE  | FALSE    | FALSE  | FALSE |
    | "-1"     | TRUE   | FALSE  | FALSE  | FALSE  | TRUE   | FALSE  | FALSE  | TRUE   | FALSE  | FALSE    | FALSE  | FALSE |
    | NULL     | FALSE  | TRUE   | FALSE  | TRUE   | FALSE  | FALSE  | FALSE  | FALSE  | TRUE   | TRUE     | FALSE  | TRUE  |
    | array()  | FALSE  | TRUE   | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | TRUE   | TRUE     | FALSE  | FALSE |
    | "php"    | TRUE   | FALSE  | FALSE  | TRUE   | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE    | TRUE   | FALSE |
    | ""       | FALSE  | TRUE   | FALSE  | TRUE   | FALSE  | FALSE  | FALSE  | FALSE  | TRUE   | FALSE    | FALSE  | TRUE  |
    +----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+----------+--------+-------+

===严格比较

+----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+----------+--------+-------+
|          | TRUE   | FALSE  |   1    |   0    |  -1    |  "1"   |  "0"   | "-1"   | NULL   | array()  | "php"  |  ""   |
+----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+----------+--------+-------+
| TRUE     | TRUE   | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE    | FALSE  | FALSE |
| FALSE    | FALSE  | TRUE   | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE    | FALSE  | FALSE |
| 1        | FALSE  | FALSE  | TRUE   | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE    | FALSE  | FALSE |
| 0        | FALSE  | FALSE  | FALSE  | TRUE   | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE    | FALSE  | FALSE |
| -1       | FALSE  | FALSE  | FALSE  | FALSE  | TRUE   | FALSE  | FALSE  | FALSE  | FALSE  | FALSE    | FALSE  | FALSE |
| "1"      | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | TRUE   | FALSE  | FALSE  | FALSE  | FALSE    | FALSE  | FALSE |
| "0"      | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | TRUE   | FALSE  | FALSE  | FALSE    | FALSE  | FALSE |
| "-1"     | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | TRUE   | FALSE  | FALSE    | FALSE  | FALSE |
| NULL     | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | TRUE   | FALSE    | FALSE  | FALSE |
| array()  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | TRUE     | FALSE  | FALSE |
| "php"    | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE    | TRUE   | FALSE |
| ""       | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE  | FALSE    | FALSE  | TRUE  |
+----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+----------+--------+-------+

参考: http://php.net/manual/en/types.comparisons.php

if(isset($_POST["submit"]) && ($file_check === False)) { $file_check='ok';}

使用 '===' 在 strpos() 中检查 TRUE 或 FALSE