程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了if 语句检查字符串是否为问号大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决if 语句检查字符串是否为问号?

开发过程中遇到if 语句检查字符串是否为问号的问题如何解决?下面主要结合日常开发的经验,给出你关于if 语句检查字符串是否为问号的解决方法建议,希望对你解决if 语句检查字符串是否为问号有所启发或帮助;

我已经用 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 版本

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 === "?")
,

您应该比较相同类型的变量。当有不同的类型时,结果可能不是你所期望的。

"0" == "?" // is false
0 == "?"   // is true (php 7.3)

将字符串与 int 进行比较时,该字符串将被视为 int。

intval("?") // which is 0 (php 7.3)

所以 0 == 0 将返回真;

大佬总结

以上是大佬教程为你收集整理的if 语句检查字符串是否为问号全部内容,希望文章能够帮你解决if 语句检查字符串是否为问号所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:if