关于使用PHP进行类型比较

总结

根据上述描述,据说即使PHP中进行类型比较的目标类型不同,也会变为TRUE。
https://www.php.net/manual/ja/migration80.incompatible.php
因为0 == “0”会变为TRUE,所以如果要验证类型匹配,需要将其改为0 === “0”。

实践(PHP)

我用PHP写了一个简单的处理操作。
真的0 == “0”会成为true。

<?php
if (0 == "0") {
  echo "true";
} else
  echo "false";
?>
実行結果
% php test.php 
true

下面的代码将试图执行。
只有一个变更点,即「if (0 == “0”)」被改为「if (0 === “0”)」。

<?php
// 比較対象の型も検証する
if (0 === "0") {
  echo "true";
} else
  echo "false";
?>
実行結果
% php test.php 
false

我已经确认进行类型验证会得到false的结果。

使用 (Ruby) 进行实践

以Ruby而言,”0 == “0””无法将数字与字符串进行比较,因此结果为false。
这是预期的结果。

if 0 == "0" then
  puts "true"
else
  puts "false"
end
実行結果
% ruby test.rb 
false

实际应用(Python)

在Python中,因为”0″和0是不同的类型,所以”0 == “0””的结果是false。这也是预期的结果。

if 0 == "0":
    print("true")
else:
    print("false")
% python test.py 
false

总结

PHP与Ruby或Python的设计理念似乎不同。
PHP只要与比较对象相符,就会将数字0和字符串0都视为true。

bannerAds