PHP長整型在32位系統中強制轉化溢出

來源:互聯網
上載者:User

標籤:程式   category   結果   常量   出錯   程式猿   sdn   max   ext   

      

        CleverCode近期遇到一個PHP項目整形轉化問題,mysql有一個欄位id是bigint的,裡面有長整型,如id = 5147486396。可是php代碼因為曆史原因卻部署在多台機器中,當中A機器32位系統中,B機器64系統中。如今的問題是64系統中頁面訪問正常。32位系統中訪問出錯了。原因是php整形溢出。


1 A機器示範1.1 擷取A機器系統位元

# getconf LONG_BIT


1.2 整形轉化代碼
<?

php$id = 5147486396;echo ‘$id:‘.$id."\r\n";$value = (int)$id;echo ‘(int)$id:‘.$value."\r\n";$value = intval($id);echo ‘intval($id):‘.$value."\r\n";$value = filter_var($id, FILTER_VALIDATE_INT);echo ‘filter_var($id, FILTER_VALIDATE_INT):‘."\r\n";var_dump($value);?>


1.3 執行結果(int)5147486396的結果是852519100。intval(5147486396)的結果是852519100,filter_var(5147486396, FILTER_VALIDATE_INT)結果是false。



2 B機器示範2.1 擷取B機器系統位元# getconf LONG_BIT

2.2 整形轉化代碼
<?php$id = 5147486396;echo ‘$id:‘.$id."\r\n";$value = (int)$id;echo ‘(int)$id:‘.$value."\r\n";$value = intval($id);echo ‘intval($id):‘.$value."\r\n";$value = filter_var($id, FILTER_VALIDATE_INT);echo ‘filter_var($id, FILTER_VALIDATE_INT):‘."\r\n";var_dump($value);?>


2.3 執行結果(int)5147486396的結果是5147486396。intval(5147486396)的結果是5147486396,filter_var(5147486396, FILTER_VALIDATE_INT)結果是5147486396。

3 結論        整型數的字長和平台有關。雖然通常最大值是大約二十億(32 位有符號)。

64 位元平台下的最大值一般是大約 9E18。

PHP 不支援不帶正負號的整數。Integer 值的字長能夠用常量 PHP_INT_SIZE來表示,自 PHP 4.4.0 和 PHP 5.0.5後。最大值能夠用常量 PHP_INT_MAX 來表示。



著作權聲明:1)原創作品,出自"CleverCode的部落格",嚴禁轉載,否則追究著作權法律責任。
2)原創地址:http://blog.csdn.net/clevercode/article/details/46423103。
3)分類地址(PHP程式猿技術精粹):http://blog.csdn.net/clevercode/article/category/3169943(部落格持續添加。關注請收藏)。
4)歡迎大家關注CleverCode部落格很多其它的精彩內容:http://blog.csdn.net/CleverCode。
5)歡迎大家關注CleverCode的微博:http://weibo.com/CleverCode。


PHP長整型在32位系統中強制轉化溢出

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.