2016-09-26 49 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