[TOC]
到底什么是整型啊!一個 integer 是集合 ? = {..., -2, -1, 0, 1, 2, ...} 中的一個數。
整型值可以使用十進制,十六進制,八進制或二進制表示,前面可以加上可選的符號(- 或者 +)。
二進制表達的 integer 自 PHP 5.4.0 起可用。
要使用八進制表達,數字前必須加上 0(零)。要使用十六進制表達,數字前必須加上 0x。要使用二進制表達,數字前必須加上 0b。
案例1:
## 整數文字表達
~~~
<!--?php
$a = 1234; // 十進制數
$a = -123; // 負數
$a = 0123; // 八進制數 (等于十進制 83)
$a = 0x1A; // 十六進制數 (等于十進制 26)
?-->
~~~
整型數的字長和平臺有關,盡管通常最大值是大約二十億(32 位有符號)。64 位平臺下的最大值通常是大約 9E18。PHP 不支持無符號整數。Integer 值的字長可以用常量 PHP_INT_SIZE來表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量 PHP_INT_MAX 來表示。
## 注意:
如果向八進制數傳遞了一個非法數字(即 8 或 9),則后面其余數字會被忽略。
案例2:
## 八進制數的怪事
以0開始,后面跟0-7的整數(了解知識點)
~~~
<!--?php
var_dump(01090); // 八進制 010 = 十進制 8
?-->
~~~
整數溢出
如果給定的一個數超出了 integer 的范圍,將會被解釋為 float。同樣如果執行的運算結果超出了 integer 范圍,也會返回 float。
案例3:
## 32 位系統下的整數溢出
~~~
<!--?php
$large_number = 2147483647;
var_dump($large_number); // int(2147483647)
$large_number = 2147483648;
var_dump($large_number); // float(2147483648)
$million = 1000000;
$large_number = 50000 * $million;
var_dump($large_number); // float(50000000000)
?-->
~~~
案例4:
## 64 位系統下的整數溢出
~~~
<!--?php
$large_number = 9223372036854775807;
var_dump($large_number); // int(9223372036854775807)
$large_number = 9223372036854775808;
var_dump($large_number); // float(9.2233720368548E+18)
$million = 1000000;
$large_number = 50000000000000 * $million;
var_dump($large_number); // float(5.0E+19)
?-->
~~~
PHP 中沒有整除的運算符。1/2 產生出 float 0.5。值可以舍棄小數部分強制轉換為 integer,或者使用 round() 函數可以更好地進行四舍五入。
~~~
<!--?php
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
?-->
~~~
轉換為整型
要明確地將一個值轉換為 integer,用 (int) 或 (integer) 強制轉換。不過大多數情況下都不需要強制轉換,因為當運算符,函數或流程控制需要一個 integer 參數時,值會自動轉換。還可以通過函數 intval() 來將一個值轉換成整型。
參見:類型轉換的判別。
從布爾值轉換
FALSE 將產生出 0(零),TRUE 將產生出 1(壹)。
從浮點型轉換
當從浮點數轉換成整數時,將向下取整。
如果浮點數超出了整數范圍(32 位平臺下通常為 +/- 2.15e+9 = 2^31,64 位平臺下通常為 +/- 9.22e+18 = 2^63),則結果為未定義,因為沒有足夠的精度給出一個確切的整數結果。在此情況下沒有警告,甚至沒有任何通知!
注意:
決不要將未知的分數強制轉換為 integer,這樣有時會導致不可預料的結果。
~~~
<!--?php
echo (int) ( (0.1+0.7) * 10 ); // 顯示 7!
?-->
~~~
- 入門指引
- 簡介
- PHP是什么
- PHP能做什么
- 簡明教程
- 學PHP需要什么
- 我的第一個PHP頁面
- 實用的PHP腳步
- PHP是如何處理表單的
- 在新版本的PHP如何實用舊的PHP代碼
- 下一步需要做什么
- PHP語言參考
- PHP基本語法
- PHP標記
- PHP多進程管理-pcntl_fork
- PHP文件上傳易犯錯誤
- PHP從HTML中分離
- PHP的指令分隔符
- PHP序列化serialize
- PHP類常量
- PHP Traits
- 從 HTML 中分離
- 注釋
- PHP數據類型
- PHP支持的類型簡介
- 布爾類型(Boolean)就是易經知識
- 整型(integer)即整數
- 浮點型(float)
- 字符串(string)
- 數組(Array)
- 對象(object)一定要搞
- 資源類型(resource)
- PHP安裝與環境配置
- 安裝前需要考慮的事項
- Unix系統下安裝PHP
- Unix 系統下安裝 Apache 1.3.x
- Unix 系統下安裝 Apache 2.x
- Unix 系統下安裝 Nginx 1.4.x
- Unix 平臺安裝 Lighttpd 1.4
- Sun Solaris 上的 Sun、iPlanet 和 Netscape 服務器
- CGI 命令行設置
- 針對 HP-UX 平臺的安裝提示
- 在 OpenBSD 系統下的安裝PHP
- Debian GNU/Linux 安裝說明
- 在Mac OS X 系統下安裝PHP
- 使用軟件包
- 使用內置的 PHP
- Windows 系統下的安裝
- 云計算平臺上的安裝
- Microsoft Azure
- 在亞馬遜(Amazon EC2)安裝PHP
- PHP語法參考
- 類型
- NULL
- Callback 回調類型
- 本文檔中使用的偽類型與變量
- 類型轉換的判別
- PHP 類型比較表
- 常量和變量
- 語法基礎
- 預定義變量
- 變量范圍
- 可變變量
- 外部變量
- 常量
- 語法
- 魔術常量
- PHP表達式&運算符
- 賦值運算符
- 位運算符
- 比較運算符
- 錯誤控制運算符
- 執行運算符
- 遞增/遞減運算符
- 邏輯運算符
- 字符串運算符
- 數組運算符
- 類型運算符
- 流程控制
- continue
- switch
- declare
- return
- require
- include
- require_once