php - if 语句检查字符串是否为问号

标签 php if-statement

我已经使用 PHP 编程近 15 年了,今天我要问一个令我困惑的简单问题。我需要检查字符串是否是“?”...但它不起作用。

$niveau = 0;
$result = "Original";
if($niveau == "?") $result = "Found a question";
echo "Result :".$result;

输出: 结果:找到问题

问题,由于$niveau的值为0,if语句不应该改变$retour的值,但它确实改变了!为什么?有人可以解释这种行为吗?

最佳答案

这是 Backward Incompatible Changes 之一,它在 PHP 8 中工作正常,但在 PHP 版本 < 8 中不行。这里的问题是您将字符串与数字进行比较,这可能会出错。

0 == "foo" // True (PHP < 8) / False (PHP 8)

因为,任何字符串的整数值为0:

<?php
  echo intval("Hello"); // 0
  echo intval("?");     // 0

0比较得出true

因此将 $niveau 转换为字符串,然后比较向后兼容性。

<?php
  $niveau = 0;
  $result = "Original";
  if ($niveau . "" == "?") {
    $result = "Found a question";
  }
  echo "Result :".$result;

这给了我:

Result :Original

Check here在所有版本上!

另一种方式,使用三个===进行严格检查:

if ($niveau === "?")

关于php - if 语句检查字符串是否为问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66665495/

相关文章:

php - 创建一个输出用户输入数字的计算页面

C++ 食物菜单(使用 do while 循环)

java - 数据插入数据库android后如何顺序更改textview

java - java中的有序或无序序列问题

python - 循环使用两个计数器

javascript - 在 php while 循环中循环 HTML 代码

php - Google Drive API - 更改 : list. 获取已删除文件的原始 ID

php - 管理快速增长的网站

php - cURL 在 PHP 7 上非常慢,但在 PHP 5 上则不然

jquery - 如果单击按钮为空,则更改输入的边框颜色