2016-09-26 101 views
17

我注意到在以下不同的消息导致PHP 5.x的代码和7:PHP 5至7迁移 - 数字比较

if ('0xFF' == 255) { 
    echo 'Equal'; 
} else { 
    echo 'Not equal'; 
} 
  • 5.x的:等于
  • 7:不等于

试图找到在迁移指南和PHP文档中导致它的变化的描述,但找不到任何东西。可能它在某处,我错过了它。你能指点吗?谢谢!

当我看着

+0

[这就是为什么我总是讨厌字符串/数字/布尔等隐式类型转换和类型转换比较](http://i.stack.imgur。 com/35MpY.png) - [猜猜看是什么,每种语言都有自己的规则,因为其他都是愚蠢的,那么](http://php.net/manual/en/types.comparisons.php) – vaxquis

回答

24

它在这里:http://php.net/manual/en/migration70.incompatible.php

更改字符串处理

十六进制字符串不再被认为是数字

含有十六进制数字的字符串不再被认为是 数字。例如:<?php var_dump("0x123" == "291"); etc ...

+4

如果你绝对必须做这种比较,你可以将[hexdec](http://php.net/manual/en/function.hexdec.php)中的十六进制值打包得到一个十进制数。 – rockerest

+0

啊,这个页面是我第一次看到,不敢相信我错过了!谢谢! – Pavel

+1

另请参阅动机RFC,[删除数字字符串中的十六进制支持](https://wiki.php.net/rfc/remove_hex_support_in_numeric_strings)。 – bishop