Php 如果别人比错了,那就奇怪了

Php 如果别人比错了,那就奇怪了,php,Php,如上面的代码所示,只有当$comet的值与$string不匹配时,才会执行大括号内的任何内容,从而退出 但它们都具有相同的值,即“notificationComet” 我测试了这两个变量的gettype(),它们以类型返回字符串。 我用了=而不是==,没有区别。 如果我将条件更改为:if($comet===$string)内部的块不会执行 我只是不明白为什么if($comet!==$string)的条件是true,因为它们都具有相同的值 请向我解释我犯了什么错误?试着用下面的句子 $comet

如上面的代码所示,只有当
$comet
的值与
$string
不匹配时,才会执行大括号内的任何内容,从而退出

但它们都具有相同的值,即“notificationComet”

我测试了这两个变量的gettype(),它们以类型返回字符串。
我用了
=而不是
==,没有区别。
如果我将条件更改为:
if($comet===$string)
内部的块不会执行

我只是不明白为什么
if($comet!==$string)
的条件是
true
,因为它们都具有相同的值


请向我解释我犯了什么错误?

试着用下面的句子

$comet = $this->model->getActiveComet($userId);
$string = 'notificationComet';

if ($comet !== $string) {
    echo $comet;
    echo $string;
    echo "yes";exit;
  }

我相信这会管用。

尝试使用以下方法

$comet = $this->model->getActiveComet($userId);
$string = 'notificationComet';

if ($comet !== $string) {
    echo $comet;
    echo $string;
    echo "yes";exit;
  }


我相信那会有用。

您是否在
$comet
$string
上都尝试了
var\u转储
?您是否可以在
$comet
中显示值?当然,这可能是导致错误的原因。为什么不使用
strcmp
可以同时显示变量的var\u转储-$comet和$string?您是否尝试了
var\u转储
$comet
$string
上,你能在
$comet
中显示值吗?当然,这可能是导致错误的原因。为什么不使用
strcmp
你能同时显示变量-comet和$string的变量转储吗?是的……有什么问题,为什么必须使用strpos?
strpos
实际上是一种子字符串类型关于功能,我不推荐它。但无论如何,这取决于你想用什么样的方式。@KEREN。strpos用于查找子字符串在字符串中第一次出现的位置。。您可以按建议将其用于字符串的任何实例。@KEREN。。。就你的情况而言,我不知道为什么会这样。。但我确信模型返回的值类型有问题。。。然而,STRPOS将确保无论“变量包含的内容”是什么,它都将作为字符串处理。@KEREN。。。如果处理的变量不确定是否返回字符串类型,则必须使用STRPOS。。因为即使变量是数字,它也会将值视为字符串。是的,可以工作…有什么问题,为什么必须使用strps?
strps
实际上是一种子字符串类型的函数,我不推荐使用它。但无论如何,这取决于你想用什么样的方式。@KEREN。strpos用于查找子字符串在字符串中第一次出现的位置。。您可以按建议将其用于字符串的任何实例。@KEREN。。。就你的情况而言,我不知道为什么会这样。。但我确信模型返回的值类型有问题。。。然而,STRPOS将确保无论“变量包含的内容”是什么,它都将作为字符串处理。@KEREN。。。如果处理的变量不确定是否返回字符串类型,则必须使用STRPOS。。因为即使变量是数字,它也会将值视为字符串。