Php 比较以零开头的两个字符串

Php 比较以零开头的两个字符串,php,Php,我想互相检查两个字符串,一个以零开头,一个没有。但这似乎导致了一个真实的结果。例如: if("098" == "98"){ return true; } 有人能解释一下为什么PHP会产生这样的结果吗?我能想到的一个简单原因是,如果两种类型不同,运算符==在两种不同类型之间进行强制转换,而运算符===执行“类型安全比较”。这意味着只有当两个操作数的类型和值相同时,它才会返回true 从你的例子来看 if("098" == "98"){ //true } 另外,一些PHP函数也有参数

我想互相检查两个字符串,一个以零开头,一个没有。但这似乎导致了一个真实的结果。例如:

if("098" == "98"){
   return true;
}

有人能解释一下为什么PHP会产生这样的结果吗?

我能想到的一个简单原因是,如果两种类型不同,运算符==在两种不同类型之间进行强制转换,而运算符===执行“类型安全比较”。这意味着只有当两个操作数的类型和值相同时,它才会返回true

从你的例子来看

if("098" == "98"){
   //true
}

另外,一些PHP函数也有参数来表示严格的检查。一个例子是数组中的
如果与
=
进行比较,php会尝试在不考虑类型的情况下对它们进行比较。实际上,php将这两个数字转换成一个整数,当98等于98时,
“098”==“98”
也是真的

避免这种情况的最好方法是使用
===
,它也会在不进行任何转换的情况下比较类型

if("098" === "98"){
    return true;
}

如果您添加===它意味着严格的检查,它应该是falseYes,但我想知道为什么==不起作用。谢谢你的评论。