中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php 語言參考-數據類型

發布時間:2020-06-09 16:42:26 來源:網絡 閱讀:546 作者:芭菲雨 欄目:web開發

1.類型介紹:

php支持8種原始類型

四種標量類型

。布爾型boolean

。×××(integer)

。浮點型(float)(浮點數,也做double)

。字符串(string)

兩種復合類型

。數組(array)

。對象(object)

最后是兩種特殊類型

。資源(resource)

。null

為了確保代碼的易讀性,本手冊還介紹了一些偽類型

。混合(mixed)

。數字(number)

。回饋(callback)

你可能還會讀到一些關于雙精度double類型的參考。實際上double和float是相同的,由于一些歷史原因這兩個名詞同時存在

變量的類型通常不是由程序員設定的,確切的說是有php根據該變量使用的上線問運行時決定的

  注:如果你想查看某個表達式的值和類型,用var_dump()。

  注:如果你只想看到一個以讀懂的類型的表達方式用于調試,用gettype().要查看某個類型,不要用gettype(),而用is_type()函數,以下是一些范例:

<?php
$bool=TRUE;//a boolean
$str="foo";//a string
$int=12;//an integer
echo gettype($bool);//prints out "boolean"
echo gettype($str);//print out "string"
//If this is an integer, increment it by four
if(is_int($int))
{
  $int+=4;
}
//If $bool is a string,print it out
//(does not print out anything)
if(is_string($bool))
{
   echo "String:$bool";
}
?>

 如果你要將一個變量強制轉換成某類型,可以對其使用強制轉換或者settype()函數。

注意變量很據當時的類型在特定場合下會表現出不同的值。更多類型件類型戲法。此外你還可以參考 php類型比較表 看不同類型相互比較的例子。

2。布爾型

這是最簡單的類型。boolean 表達了真值。可以為true或者false

     注:布爾類型是php4引進的

語法

要制定一個布爾值,使用關鍵字true或者false,兩個都是大小寫不敏感的

<?php

$foo=True;//assign the value TRUE to $foo

?>

通常你用某些運算符返回boolean值,并將其傳遞給流程控制

//==is an operator which test
//equality and returns a boolean
if($action=="show_version"){
echo "The version is 1.23";
}
//this is not necessary...
if($show+separators==true){
  echo "<hr>\n";
}
//...because you can simply type
if($show_separators){
  echo "<hr>\n";
}

 轉換成布爾值

要明示地將一個值轉換成boolean,用bool或者boolean來強制轉換。但是很多情況下不需要強制轉換,因為當運算符,函數或者流程控制需要一個boolean參數時,該值會被自動轉換。

參見類型戲法

當轉換成boolean時,以下值被認為是false

。布爾值false

。整型值 0(零)

。浮點型值0.0(零)

。空白字符串和字符串“0”

。沒有成員變量的數組

。沒有單元的對象

。特殊類型null(包括尚未定義的變量)

所有其他值都被認為是true(包括任何資源)

警告:

-1和其他非零值(不論正負)一樣,被認為是true

<?php
echo gettype((bool)"");//bool(false)
echo gettype((bool)1);//bool(true)
echo gettype((bool)-2);//bool(true)
echo gettyope((bool)"foo");//bool(true)
echo gettype((bool)2.3e5);//bool(true)
echo gettype((bool)array(12));//bool(true)
echo gettype((bool)array());//bool(false)
?>

 3.×××

一個integer是集合Z={...,-2,-1,0,1,2,...}中的一個數。

參見任意長度證書/GMP,浮點數 和任意精度數學庫/BCMath

語法

整型值可以用10進制,16進制或8進制符號指定,前面可以加上可選的符號(—或者+)

如果用8進制符號,數字前必須加上0,用16進制符號數字前必須加上0x

例子 6-1 整數文字表達

<?php

$a=1234;#10進制數

$a=-123;#10進制數

$a=0123;#八進制數(等于10進制的83)

?>

在字面上,×××變量正式的結構可以為:

<?php

decimal   :[1-9][0-9]*
              |0
hexadecimal:0[xX][0-9a-fA-F]+
octal            :0[0-7]+
integer         :[+-]?decimal
                   |[+-]?hexadecimal
                   |[+-]?octal

?>

 ×××的字長和平臺有關,盡管通常最大值是大約20億(32位有符號),php不支持無符號整數

整數溢出

如果你指定了一個數超出了integer的范圍,竟會被解釋為float.同樣如果你執行的運算結果超出了integer范圍,也會返回float

<?php
$large_number=2147483647;
var_dump($large_number);
//輸出為:int(2147483647)
$large_number=2147483648;
var_dump($large_number);
//輸出為:float(2147483648)
//同樣也適用于16進制的表示的整數
var_dump(0x80000000);
//輸出為:float(2147483648)
$million=1000000;
$large_number=50000*$nillion;
var_dump($larger_number);
//輸出為:float(50000000000)
?>

 警告:

不幸的是php中有個bug,因此當有負數參與結果是并不總是正確。

例如當運算-50000*¥million是結果是-429496728.不過當兩個運算數都是正數時就沒有問題

這個問題在php4.1.0中解決了

php中沒有整出的運算符。1/2產生浮點數0.5.您可以總是舍棄小數部分,或者使用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(壹)

從浮點數轉換

當從浮點數轉換成正數時,數字將被取整(丟棄小數位)

如果浮點數超出了整數范圍(通常為+/- 2.15e+9=2^31),則結果不確定

,因為沒有足夠的精度使浮點數給出一個確切的整數結果。在此情況下沒有警告,甚至沒有任何通知!

譯者注:在linux下返回的結果是最小負數(-2147483648),而在windows下返回的結果是0

警告:

絕不要將未知的分數強制轉換為integer,這樣有時會導致意外的結果

<?php

echo (int)((0.1+0.7)*10);//顯示7!

?>

從字符串轉換

注意:

沒有定義從其他類型轉換為×××的行為。目前的行為和值先轉換為布爾值一樣。不過不要依靠此行為,因為它會未加通知的改變。

4.浮點型

浮點數(也叫“float”,"doubles"或“real numbers”)可以用以下任何語法定義

<?php

$a=1.234;

$a=1.2e3;

$a=7E-10;

?>

形式上:

LNUM       [0-9]+
DNUM       ([0-9]*[\.]{LNUM})|({LNUM}[\.][0-9]*)
EXPONENT_DNUM(({LNUM}|{DNUM})[eE][+-]?{LNUM})

 浮點數的字長和平臺相關,盡管通常最大值是1.8e308并具有14位十進制數字的精度(64位IEEE格式)

浮點數精度

顯然簡單的十進制分數如同0.1或0.7不能在不丟失一點點精度的情況下轉換為內部二進制的格式,這樣會造成混亂的結果:例如floor((0.1+0.7)*10)通常會返回7而不是預期中的8,因為該結果內部的表示其實是類似7.9999999.。。。

這和一個事實有關,那就是那就是不可能用精確的用有限位數表達十進制分數。例如十進制1/3變成了0.3333333.

所以永遠不要相信浮點數結果精確到了最后一位,也永遠不要比較兩個浮點數是否相等。如果確實需要更高的精度,應該使用任意精度數學函數庫gmp函數庫

轉換為浮點數:

如果您洗完了解有關何時和如何將字符串轉換成浮點數的信息,請查閱標題為“將字符串轉換為數字”的有關章節。對于其他類型的值,其情況類似于先將值轉換為×××,然后再轉換成浮點。

5.字符串

string是一系列字符。在php中,字符和字節一樣,也就是說,一共有256種不同字符的可能性。這也暗示,php和unicode沒有本地支持。請參閱utf8_encode和utf8_decode

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

营山县| 鹤岗市| 淮滨县| 龙山县| 揭阳市| 新泰市| 收藏| 塔城市| 桑植县| 通州市| 凤翔县| 南部县| 温宿县| 兴山县| 大方县| 秀山| 黄浦区| 新和县| 湟中县| 绍兴市| 黄冈市| 赣州市| 公安县| 渑池县| 桂东县| 洮南市| 宁化县| 集贤县| 克拉玛依市| 杭州市| 忻州市| 航空| 阳信县| 定襄县| 霍城县| 鱼台县| 无极县| 义马市| 宜君县| 泰州市| 雅江县|