国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

數(shù)據(jù)類型 - PHP手冊(cè)筆記

mochixuan / 3219人閱讀

摘要:類型簡(jiǎn)介支持種原始數(shù)據(jù)類型。布爾類型特別注意,當(dāng)轉(zhuǎn)換為時(shí),以下值被認(rèn)為是空字符串,以及字符串不包括任何元素的數(shù)組只要是對(duì)象,返回值均為。非整數(shù)類型下標(biāo)會(huì)被轉(zhuǎn)換成整數(shù)。自起可用類型指定回調(diào)類型。

類型簡(jiǎn)介

PHP 支持 8 種原始數(shù)據(jù)類型。

四種標(biāo)量類型:

boolean(布爾型,不區(qū)分大小寫(xiě))

integer(整型)

float(浮點(diǎn)型,也稱作double)

string(字符串)

兩種復(fù)合類型:

array(數(shù)組)

object(對(duì)象)

最后是兩種特殊類型:

resource(資源)

NULL(無(wú)類型)

如果想查看某個(gè)表達(dá)式的值和類型,用var_dump()函數(shù)。


上面的代碼通過(guò)var_dump()打印變量的相關(guān)信息,輸出結(jié)果如下所示(PHP版本5.5.12)。

array (size=3)
  0 => int 1
  1 => int 2
  2 => 
    array (size=3)
      0 => string "a" (length=1)
      1 => string "b" (length=1)
      2 => string "c" (length=1)

float 3.1

boolean true

如果只是想得到一個(gè)易讀懂的類型的表達(dá)方式用于調(diào)試,用gettype()函數(shù)。要查看某個(gè)類型,不要用gettype(),而用is_type函數(shù)。使用is_type可以對(duì)參數(shù)進(jìn)行過(guò)濾。

如果要將一個(gè)變量強(qiáng)制轉(zhuǎn)換為某類型,可以對(duì)其使用強(qiáng)制轉(zhuǎn)換或者settype()函數(shù)。注意變量根據(jù)其當(dāng)時(shí)的類型在特定場(chǎng)合下會(huì)表現(xiàn)出不同的值。

boolean布爾類型

特別注意,當(dāng)轉(zhuǎn)換為boolean時(shí),以下值被認(rèn)為是FALSE:

空字符串,以及字符串 "0"

不包括任何元素的數(shù)組

只要是對(duì)象,返回值均為T(mén)RUE。

下面這段程序能加深對(duì)boolean類型轉(zhuǎn)換的理解。


integer整型

要使用八進(jìn)制表達(dá),數(shù)字前必須加上0(零)。
要使用十六進(jìn)制表達(dá),數(shù)字前必須加上0x。
要使用二進(jìn)制表達(dá),數(shù)字前必須加上0b。
二進(jìn)制表達(dá)的integer自PHP 5.4.0起可用。

integer值的字長(zhǎng)可以用常量PHP_INT_SIZE來(lái)表示,最大值可以用常量PHP_INT_MAX來(lái)表示。


上面程序最后一條語(yǔ)句,處理八進(jìn)制時(shí)發(fā)生一件怪事。那是因?yàn)?,如果向八進(jìn)制數(shù)傳遞了一個(gè)非法數(shù)字(即8或9),則后面其余數(shù)字會(huì)被忽略。

如果給定的一個(gè)數(shù)超出了integer的范圍,將會(huì)被解釋為float。同樣如果執(zhí)行的運(yùn)算結(jié)果超出了integer范圍,也會(huì)返回float。

PHP中沒(méi)有整除的運(yùn)算符。1/2產(chǎn)生出float 0.5。值可以舍棄小數(shù)部分強(qiáng)制轉(zhuǎn)換為integer,或者使用round()函數(shù)可以更好地進(jìn)行四舍五入。

手冊(cè)中說(shuō),決不要將未知的分?jǐn)?shù)強(qiáng)制轉(zhuǎn)換為integer,這樣有時(shí)會(huì)導(dǎo)致不可預(yù)料的結(jié)果。


這段程序的輸出結(jié)果為7,永遠(yuǎn)不要相信浮點(diǎn)數(shù)!

float浮點(diǎn)型

某些數(shù)學(xué)運(yùn)算會(huì)產(chǎn)生一個(gè)由常量NAN所代表的結(jié)果。此結(jié)果代表著一個(gè)在浮點(diǎn)數(shù)運(yùn)算中未定義或不可表述的值。任何拿此值與其它任何值進(jìn)行的松散或嚴(yán)格比較的結(jié)果都是FALSE。

string字符串

一個(gè)字符串string就是由一系列的字符組成,其中每個(gè)字符等同于一個(gè)字節(jié)。實(shí)現(xiàn)方式是一個(gè)由字節(jié)組成的數(shù)組再加上一個(gè)整數(shù)指明緩沖區(qū)長(zhǎng)度。這意味著PHP只能支持256的字符集,因此不支持Unicode。那中文是怎樣顯示的呢?先把疑問(wèn)記錄下來(lái)。

字符串有4中語(yǔ)法表達(dá)方式:

單引號(hào)

雙引號(hào)

heredoc

nowdoc

單引號(hào)

要表達(dá)一個(gè)單引號(hào)自身,需在它的前面加個(gè)反斜線()來(lái)轉(zhuǎn)義。
要表達(dá)一個(gè)反斜線自身,則用兩個(gè)反斜線()。
其它任何方式的反斜線都會(huì)被當(dāng)成反斜線本身。

但是,如果單引號(hào)包裹的字符串中只有一個(gè)反斜線,反斜線也會(huì)輸出,這是為什么呢?

雙引號(hào)

可以對(duì)轉(zhuǎn)義字符進(jìn)行解析,最重要的特征是變量會(huì)被解析。

單引號(hào)、雙引號(hào)都支持字符串多行錄入。

heredoc結(jié)構(gòu)

這種結(jié)構(gòu)在以往的編程中使用的較少,這里詳細(xì)學(xué)習(xí)一下。

結(jié)構(gòu)大致如下:
運(yùn)算符<<<之后提供標(biāo)識(shí)符,然后換行。
接下來(lái)是字符串本身。
最后用前面定義的標(biāo)識(shí)符作為結(jié)束標(biāo)志。

結(jié)束時(shí)所引用的標(biāo)識(shí)符必須在該行的第一列,這意味著標(biāo)識(shí)符不能縮進(jìn),這行除了可能有一個(gè)分號(hào)(;)外,絕對(duì)不能包含其它字符。

Heredocs結(jié)構(gòu)不能用來(lái)初始化類的屬性。自PHP 5.3起,此限制僅對(duì)heredoc包含變量時(shí)有效。

Heredoc 結(jié)構(gòu)就象是沒(méi)有使用雙引號(hào)的雙引號(hào)字符串,轉(zhuǎn)義規(guī)則同雙引號(hào)。

nowdoc結(jié)構(gòu)

nowdoc結(jié)構(gòu)與heredoc相似,只是跟在運(yùn)算符<<<后面的標(biāo)識(shí)符要用單引號(hào)括起來(lái)。

就象heredoc結(jié)構(gòu)類似于雙引號(hào)字符串,nowdoc結(jié)構(gòu)是類似于單引號(hào)字符串的。nowdoc中不進(jìn)行解析操作。這種結(jié)構(gòu)很適合用于嵌入PHP代碼或其它大段文本而無(wú)需對(duì)其中的特殊字符進(jìn)行轉(zhuǎn)義。nowdoc結(jié)構(gòu)可以用在任意的靜態(tài)數(shù)據(jù)環(huán)境中,最典型的示例是用來(lái)初始化類的屬性或常量。

變量解析

變量解析有兩種語(yǔ)法規(guī)則,一種是簡(jiǎn)單規(guī)則,一種是復(fù)雜規(guī)則。簡(jiǎn)單規(guī)則最常用、最方便,這里詳細(xì)學(xué)習(xí)一下復(fù)雜語(yǔ)法規(guī)則。復(fù)雜規(guī)則語(yǔ)法的顯著標(biāo)記是用花括號(hào)包圍的表達(dá)式。

復(fù)雜語(yǔ)法不是因?yàn)槠湔Z(yǔ)法復(fù)雜而得名,而是因?yàn)樗梢允褂脧?fù)雜的表達(dá)式。 由于{無(wú)法被轉(zhuǎn)義,只有$緊挨著{時(shí)才會(huì)被識(shí)別。

存取和修改

可以以數(shù)組形式訪問(wèn)字符串,用超出字符串長(zhǎng)度的下標(biāo)寫(xiě)入將會(huì)拉長(zhǎng)該字符串并以空格填充。非整數(shù)類型下標(biāo)會(huì)被轉(zhuǎn)換成整數(shù)。寫(xiě)入時(shí)只用到了賦值字符串的第一個(gè)字符。用空字符串賦值則賦給的值是NULL字符。PHP的字符串在內(nèi)部是字節(jié)組成的數(shù)組。因此用花括號(hào)訪問(wèn)或修改字符串對(duì)多字節(jié)字符集很不安全。

字符串可以用 "."(點(diǎn))運(yùn)算符連接起來(lái),注意 "+"(加號(hào))運(yùn)算符沒(méi)有這個(gè)功能。

一個(gè)布爾值boolean的TRUE被轉(zhuǎn)換成string的"1"。boolean的FALSE被轉(zhuǎn)換成""(空字符串)。字符串轉(zhuǎn)換為數(shù)值,該字符串的開(kāi)始部分決定了它的值。如果該字符串以合法的數(shù)值開(kāi)始,則使用該數(shù)值。否則其值為 0(零)。

PHP的優(yōu)勢(shì)就體現(xiàn)在字符串處理的方便上,對(duì)于string的操作有很多有用的函數(shù),可以運(yùn)用各種函數(shù),還有正則表達(dá)式。

PHP 并不特別指明字符串的編碼,字符串會(huì)被按照該腳本文件相同的編碼方式來(lái)編碼。因此,操作文本的函數(shù)必須假定字符串是如何編碼的。不幸的是,PHP關(guān)于此的函數(shù)有很多變種,關(guān)于PHP的字符串處理函數(shù)還需多加學(xué)習(xí)。

array數(shù)組

PHP中的數(shù)組實(shí)際上是一個(gè)有序映射,映射是一種把values關(guān)聯(lián)到keys的類型。

可以用array()語(yǔ)言結(jié)構(gòu)來(lái)新建一個(gè)數(shù)組。它接受任意數(shù)量用逗號(hào)分隔的“鍵(key)=>值(value)對(duì)”。自5.4起可以使用短數(shù)組定義語(yǔ)法,用[]替代array()。key可以是integer或者string,value可以是任意類型。

key會(huì)有如下的強(qiáng)制轉(zhuǎn)換和規(guī)則:

包含有合法整型值的字符串會(huì)被轉(zhuǎn)換為整型。

浮點(diǎn)數(shù)也會(huì)被轉(zhuǎn)換為整型,意味著其小數(shù)部分會(huì)被舍去。

布爾值也會(huì)被轉(zhuǎn)換成整型。

null會(huì)被轉(zhuǎn)換為空字符串,即鍵名null實(shí)際會(huì)被儲(chǔ)存為""。

數(shù)組和對(duì)象不能被用為鍵名。

如果在數(shù)組定義中多個(gè)單元都使用了同一個(gè)鍵名,則只使用了最后一個(gè),之前的都被覆蓋了。

如果對(duì)給出的值沒(méi)有指定鍵名,則取當(dāng)前最大的整數(shù)索引值,而新的鍵名將是該值加一。

 "a", "02" => "b");
var_dump($a);

通過(guò)上面的規(guī)則可知,這段代碼的輸出結(jié)果如下:

array (size=2)
  20 => string "a" (length=1)
  "02" => string "b" (length=1)

如果給出方括號(hào)但沒(méi)有指定鍵名,則取當(dāng)前最大整數(shù)索引值,新的鍵名將是該值加上1(但是最小為0)。要?jiǎng)h除某鍵值對(duì),對(duì)其調(diào)用unset()函數(shù),該函數(shù)允許刪除數(shù)組中的某個(gè)鍵,但要注意數(shù)組將不會(huì)重建索引。

 "b");
$a[] = "c";
var_dump($a);
unset($a[1]);
var_dump($a);

對(duì)于上面這段程序,輸出為:

array (size=3)
  0 => string "a" (length=1)
  "b" => string "b" (length=1)
  1 => string "c" (length=1)

array (size=2)
  0 => string "a" (length=1)
  "b" => string "b" (length=1)

應(yīng)該始終在用字符串表示的數(shù)組索引上加上引號(hào)。例如用$foo["bar"]而不是$foo[bar]。此代碼中有一個(gè)未定義的常量(bar)而不是字符串("bar"-注意引號(hào)),而 PHP 可能會(huì)在以后定義此常量。

foreach控制結(jié)構(gòu)是專門(mén)用于數(shù)組的。它提供了一個(gè)簡(jiǎn)單的方法來(lái)遍歷數(shù)組。

下面的示例程序,通過(guò)讀取目錄填充數(shù)組,這里涉及到幾個(gè)函數(shù)的使用。


對(duì)于任意integer,float,string,boolean和resource類型,如果將一個(gè)值轉(zhuǎn)換為數(shù)組,將得到一個(gè)僅有一個(gè)元素的數(shù)組,其下標(biāo)為 0,該元素即為此標(biāo)量的值。

object對(duì)象

要?jiǎng)?chuàng)建一個(gè)新的對(duì)象 object,使用 new 語(yǔ)句實(shí)例化一個(gè)類。

如果將一個(gè)對(duì)象轉(zhuǎn)換成對(duì)象,它將不會(huì)有任何變化。如果其它任何類型的值被轉(zhuǎn)換成對(duì)象,將會(huì)創(chuàng)建一個(gè)內(nèi)置類 stdClass 的實(shí)例。如果該值為 NULL,則新的實(shí)例為空。數(shù)組轉(zhuǎn)換成對(duì)象將使鍵名成為屬性名并具有相對(duì)應(yīng)的值。對(duì)于任何其它的值,名為 scalar 的成員變量將包含該值。

do_foo();
var_dump($bar);

$obj = (object) "hello";
var_dump($obj);

上面的示例程序輸出結(jié)果為:

Doint foo.object(foo)[1]

object(stdClass)[2]
  public "scalar" => string "hello" (length=5)
resource資源類型

資源resource是一種特殊變量,保存了到外部資源的一個(gè)引用。資源使用的所有外部資源都會(huì)被垃圾回收系統(tǒng)釋放,很少需要手工釋放內(nèi)存。但是,持久數(shù)據(jù)庫(kù)連接比較特殊,它們不會(huì)被垃圾回收系統(tǒng)銷毀。

NULL

NULL類型只有一個(gè)值,就是不區(qū)分大小寫(xiě)的常量NULL。

callback回調(diào)類型

第一次接觸到這個(gè)概念,有點(diǎn)陌生。

自PHP 5.4起可用callable類型指定回調(diào)類型callback。

手冊(cè)示例程序中使用了很多call_user_func函數(shù),先把這函數(shù)理一下。call_user_func第一個(gè)參數(shù)作為回調(diào)函數(shù)(callback),并且將其余的參數(shù)作為回調(diào)函數(shù)的參數(shù)。返回回調(diào)函數(shù)的返回值,如果錯(cuò)誤則返回FALSE。

回調(diào)函數(shù)可以是簡(jiǎn)單函數(shù)、對(duì)象方法、靜態(tài)類方法,回調(diào)函數(shù)的幾種使用方法如下所示:

調(diào)用用戶自定義的簡(jiǎn)單函數(shù),以string類型傳遞其名稱。


調(diào)用類的靜態(tài)成員方法,類及方法被作為數(shù)組傳遞,下標(biāo)0包含該對(duì)象,下標(biāo)1包含方法名。


調(diào)用已實(shí)例化的對(duì)象方法。


調(diào)用靜態(tài)類方法。


調(diào)用父類靜態(tài)成員方法。


除了普通的用戶自定義函數(shù)外,create_function()可以用來(lái)創(chuàng)建一個(gè)匿名回調(diào)函數(shù)。

類型轉(zhuǎn)換

PHP是弱類型語(yǔ)言,變量類型根據(jù)使用該變量的上下文所決定的。

(全文完)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/21113.html

相關(guān)文章

  • PHP 手冊(cè)閱讀筆記 - 語(yǔ)言參考篇

    摘要:最近計(jì)劃把手冊(cè),認(rèn)真的先過(guò)一遍。語(yǔ)言參考類型新認(rèn)知強(qiáng)制轉(zhuǎn)換類型用。后期靜態(tài)綁定從這里開(kāi)始語(yǔ)言參考生成器新認(rèn)知生成器汗水的核心是關(guān)鍵字。語(yǔ)言參考預(yù)定義變量超全局變量前一個(gè)錯(cuò)誤信息原始數(shù)據(jù)以上 showImg(https://segmentfault.com/img/remote/1460000010147451); 最近計(jì)劃把 PHP手冊(cè),認(rèn)真的先過(guò)一遍。記錄一些以前不知道,不明確的知識(shí)...

    Developer 評(píng)論0 收藏0
  • 基本語(yǔ)法 - PHP手冊(cè)筆記

    摘要:標(biāo)記如果文件內(nèi)容是純代碼,最好在文件末尾刪除結(jié)束標(biāo)記。這可以避免在結(jié)束標(biāo)記之后萬(wàn)一意外加入了空格或者換行符,會(huì)導(dǎo)致開(kāi)始輸出這些空白,而腳本中此時(shí)并無(wú)輸出的意圖。指令分隔符需要在每個(gè)語(yǔ)句后用分號(hào)結(jié)束指令,這個(gè)分號(hào)就叫指令分隔符。 PHP標(biāo)記 如果文件內(nèi)容是純PHP代碼,最好在文件末尾刪除PHP結(jié)束標(biāo)記。這可以避免在PHP結(jié)束標(biāo)記之后萬(wàn)一意外加入了空格或者換行符,會(huì)導(dǎo)致PHP開(kāi)始輸出這些空...

    APICloud 評(píng)論0 收藏0
  • 重讀PHP手冊(cè)筆記系列(二)

    摘要:通過(guò)注冊(cè)自動(dòng)加載器,腳本引擎在出錯(cuò)失敗前有了最后一個(gè)機(jī)會(huì)加載所需的類構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)允行開(kāi)發(fā)者在一個(gè)類中定義一個(gè)方法作為構(gòu)造函數(shù)。析構(gòu)函數(shù)會(huì)在到某個(gè)對(duì)象的所有引用都被刪除或者當(dāng)對(duì)象被顯式銷毀時(shí)執(zhí)行抽象類支持抽象類和抽象方法。 語(yǔ)言參考 1. 類型 1.1 簡(jiǎn)介 showImg(https://segmentfault.com/img/bVbqlNJ?w=531&h=379);...

    馬龍駒 評(píng)論0 收藏0
  • PHP開(kāi)發(fā)手冊(cè)筆記PHP中關(guān)于文件的操作函數(shù)

    摘要:例子關(guān)閉文件操作讀取文件讀取文件中的一個(gè)字符讀取文件中的一個(gè)字符,返回文件中的一個(gè)字符并將指針移動(dòng)到下一個(gè)字符解釋指使用函數(shù)打開(kāi)文件時(shí)返回的資源對(duì)象。目標(biāo)文件的文件名及其所在路徑。服務(wù)器上目標(biāo)文件的文件名及其所在路徑。 打開(kāi)文件 fopen(string filename,string mode);//返回一個(gè)資源對(duì)象,存儲(chǔ)當(dāng)前文件資源 解釋 filename:文件的文件名及其所在...

    doodlewind 評(píng)論0 收藏0
  • 重讀PHP手冊(cè)筆記系列(一)

    摘要:手冊(cè)序言,即,是一種被廣泛應(yīng)用的開(kāi)源通用腳本語(yǔ)言,尤其適用于開(kāi)發(fā)并可嵌入中去。該語(yǔ)言的主要目標(biāo)是允許開(kāi)發(fā)人員快速編寫(xiě)動(dòng)態(tài)生成的頁(yè)面,但的用途遠(yuǎn)不只于此。對(duì)于服務(wù)器模塊版本的,僅在服務(wù)器啟動(dòng)時(shí)讀取一次。 PHP手冊(cè) 序言 PHP,即PHP: Hypertext Preprocessor,是一種被廣泛應(yīng)用的開(kāi)源通用腳本語(yǔ)言,尤其適用于 Web 開(kāi)發(fā)并可嵌入 HTML 中去。它的語(yǔ)法利用了 ...

    hikui 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

mochixuan

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<