PHP學(xué)習(xí)手冊(cè)(入門必看)Word_版.doc_第1頁
PHP學(xué)習(xí)手冊(cè)(入門必看)Word_版.doc_第2頁
PHP學(xué)習(xí)手冊(cè)(入門必看)Word_版.doc_第3頁
PHP學(xué)習(xí)手冊(cè)(入門必看)Word_版.doc_第4頁
PHP學(xué)習(xí)手冊(cè)(入門必看)Word_版.doc_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PHP 5手冊(cè)章 5. 基本語法目錄從 HTML 中分離指令分隔符注釋php學(xué)習(xí) 從 HTML 中分離PHP 的腳本由文件中一對(duì)特殊的標(biāo)記所引起的內(nèi)容,當(dāng)解釋器分析一個(gè)文件時(shí),所有特殊標(biāo)記外的普通文件,解釋器不對(duì)其做任何處理,而特殊標(biāo)記內(nèi)文件將作為 PHP 代碼被解釋器分析執(zhí)行。該運(yùn)行機(jī)制將允許您在 HTML 中嵌入 PHP 代碼:PHP 標(biāo)記外的內(nèi)容將被完全獨(dú)立開,不做任何處理,而內(nèi)部的將作為 PHP 代碼解析。用來標(biāo)記 PHP 代碼塊的標(biāo)記共有四套,其中只有兩套總是有效( 和 . . .);另外兩套可以在 php.ini 配置文件中開啟或者關(guān)閉。雖然短格式的標(biāo)記和 ASP 風(fēng)格的標(biāo)記可能比較省力,但是某些情況下您可能必須要使用長(zhǎng)格式的標(biāo)記。比如,您打算在 XML 或者 XHTML 中嵌入 PHP 代碼,您將需要使用 形式的標(biāo)記以適應(yīng) XML 的標(biāo)準(zhǔn)。PHP 支持的標(biāo)記為: 例子 5-1. 從 HTML 中分離的方式1.2. This is a shortcut for 3.echo (some editors (like FrontPage) dontlike processing instructions);4.%= $variable; # This is a shortcut for 優(yōu)先選用的方式為第一種方式 ,因?yàn)樗试S您在 XML 結(jié)構(gòu),如 XHTML 的代碼中使用 PHP。第二種方式并非總是可用的。只有當(dāng)您在 php.ini 配置文件中激活 short_open_tag 選項(xiàng),才是可用的。您也可以通過使用 short_tags() 函數(shù)(僅用于 PHP 3),或者使用 -enable-short-tags 選項(xiàng) configure PHP 來激活短格式標(biāo)記。在 php.ini-dist 配置文件中,默認(rèn)是開啟短格式標(biāo)記的,但是建議您不要使用該標(biāo)記。在 PHP 配置文件中開啟選項(xiàng) asp_tags 將激活第四種方式。注: ASP 風(fēng)格的標(biāo)記添加于 PHP 3.0.4注: 當(dāng)開發(fā)大型應(yīng)用程序或者用于分發(fā)的函數(shù)庫,或者在不受您控制的 PHP 服務(wù)器上面開發(fā)程序時(shí),請(qǐng)不要使用短格式的標(biāo)記,因?yàn)槟繕?biāo)服務(wù)器可能并不支持短格式的標(biāo)記。為了便于移植,請(qǐng)保證用于再分發(fā)的代碼中不使用短格式的標(biāo)記。PHP 代碼塊結(jié)束標(biāo)記獎(jiǎng)自動(dòng)包含最近的一個(gè)結(jié)尾的新行(如果存在的話)。而且,結(jié)束標(biāo)記自動(dòng)隱含一個(gè)分號(hào); 您不需要為 PHP 代碼塊的最后行追加一個(gè)分號(hào)。PHP 允許您使用如下的結(jié)構(gòu):php學(xué)習(xí) 例子 5-2. 更高級(jí)的脫離This is true.This is false. PHP 將直接輸出結(jié)束標(biāo)記和下一個(gè)開始標(biāo)記中的任何非 PHP 代碼。當(dāng)需要輸出大量的文本時(shí),退出 PHP 解析模式將比使用 echo() 或者 print() 或者此類的函數(shù)打印所有文本要更加的有效。指令分隔符指令分隔方式與 C 或者 Perl 類似 - 每個(gè)語句由分號(hào)格開。結(jié)束標(biāo)記(?)同樣隱含語句的結(jié)束,因此下面的代碼是等價(jià)的: 注釋PHP 支持 C,C+ 和 Unix Shell 風(fēng)格的注釋。例如: “單行”注釋僅僅注釋到行末或者當(dāng)前的 PHP 代碼塊,視乎哪個(gè)首先出現(xiàn)。 This is an example.The header above will say This is an example. 小心不要嵌套 C 風(fēng)格的注釋,當(dāng)注釋大量代碼時(shí),可能犯該錯(cuò)誤。 “單行”注釋僅僅注釋到行末或者當(dāng)前的 PHP 代碼塊,視乎哪個(gè)首先出現(xiàn)。這意味著 / ? 后面的 HTML 代碼將被打印出來:? 跳出了 PHP 模式并且返回 HTML 模式,而且 / 注釋符并不會(huì)影響到模式的轉(zhuǎn)換。章 6. 類型目錄介紹布爾型整型浮點(diǎn)型字符串?dāng)?shù)組對(duì)象資源NULL本文檔中使用的偽類型類型戲法介紹PHP 支持八種原始類型。四種標(biāo)量類型:布爾型(boolean)整型(integer)浮點(diǎn)型(float)(浮點(diǎn)數(shù),也作“double”)字符串(string)兩種復(fù)合類型:數(shù)組(array)對(duì)象(object)最后是兩種特殊類型:資源(resource)NULL為了確保代碼的易讀性,本手冊(cè)還介紹了一些偽類型:混和(mixed)數(shù)字(number)回饋(callback)您可能還會(huì)讀到一些關(guān)于“雙精度(double)”類型的參考。實(shí)際上 double 和 float 是相同的,由于一些歷史的原因,這兩個(gè)名稱同時(shí)存在。變量的類型通常不是由程序員設(shè)定的,確切地說,是由 PHP 根據(jù)該變量使用的上下文在運(yùn)行時(shí)決定的。注: 如果你想查看某個(gè)表達(dá)式的值和類型,用 var_dump()。注: 如果你只是想得到一個(gè)易讀懂的類型的表達(dá)方式用于調(diào)試,用 gettype()。要查看某個(gè)類型,不要用 gettype(),而用 is_type 函數(shù)。以下是一些范例: 如果你要將一個(gè)變量強(qiáng)制轉(zhuǎn)換為某類型,可以對(duì)其使用強(qiáng)制轉(zhuǎn)換或者 settype() 函數(shù)。注意變量根據(jù)其當(dāng)時(shí)的類型在特定場(chǎng)合下會(huì)表現(xiàn)出不同的值。更多信息見類型戲法。此外,你還可以參考 PHP 類型比較表看不同類型相互比較的例子。布爾型這是最簡(jiǎn)單的類型。boolean 表達(dá)了真值,可以為 TRUE 或 FALSE。注: 布爾類型是 PHP 4 引進(jìn)的。語法要指定一個(gè)布爾值,使用關(guān)鍵字 TRUE 或 FALSE。兩個(gè)都是大小寫不敏感的。 通常你用某些運(yùn)算符返回 boolean 值,并將其傳遞給流程控制。 / = is an operator which test/ equality and returns a booleanif ($action = show_version) echo The version is 1.23;/ this is not necessary.if ($show_separators = TRUE) echo n;/ .because you can simply typeif ($show_separators) echo n; 轉(zhuǎn)換為布爾值要明示地將一個(gè)值轉(zhuǎn)換成 boolean,用 (bool) 或者 (boolean) 來強(qiáng)制轉(zhuǎn)換。但是很多情況下不需要用強(qiáng)制轉(zhuǎn)換,因?yàn)楫?dāng)運(yùn)算符,函數(shù)或者流程控制需要一個(gè) boolean 參數(shù)時(shí),該值會(huì)被自動(dòng)轉(zhuǎn)換。php學(xué)習(xí) 參見類型戲法。當(dāng)轉(zhuǎn)換為 boolean 時(shí),以下值被認(rèn)為是 FALSE:布爾值 FALSE整型值 0(零)浮點(diǎn)型值 0.0(零)空白字符串和字符串 0沒有成員變量的數(shù)組沒有單元的對(duì)象特殊類型NULL(包括尚未設(shè)定的變量)所有其它值都被認(rèn)為是 TRUE(包括任何資源)。 警告-1 和其它非零值(不論正負(fù))一樣,被認(rèn)為是 TRUE! 整型一個(gè) integer 是集合 Z = ., -2, -1, 0, 1, 2, . 中的一個(gè)數(shù)。參見任意長(zhǎng)度整數(shù) / GMP,浮點(diǎn)數(shù) 和 任意精度數(shù)學(xué)庫 / BCMath。語法整型值可以用十進(jìn)制,十六進(jìn)制或八進(jìn)制符號(hào)指定,前面可以加上可選的符號(hào)(- 或者 +)。如果用八進(jìn)制符號(hào),數(shù)字前必須加上 0(零),用十六進(jìn)制符號(hào)數(shù)字前必須加上 0x。 例子 6-1. 整數(shù)文字表達(dá) 在字面上,整型變量正式的結(jié)構(gòu)可以為: 整型數(shù)的字長(zhǎng)和平臺(tái)有關(guān),盡管通常最大值是大約二十億(32 位有符號(hào))。PHP 不支持無符號(hào)整數(shù)。整數(shù)溢出如果你指定一個(gè)數(shù)超出了 integer 的范圍,將會(huì)被解釋為 float。同樣如果你執(zhí)行的運(yùn)算結(jié)果超出了 integer 范圍,也會(huì)返回 float。 警告不幸的是 PHP 中有個(gè) bug,因此當(dāng)有負(fù)數(shù)參與時(shí)結(jié)果并不總是正確。例如當(dāng)運(yùn)算 -50000 * $million 時(shí)結(jié)果是 -429496728。不過當(dāng)兩個(gè)運(yùn)算數(shù)都是正數(shù)時(shí)就沒問題。這個(gè)問題已經(jīng)在 PHP 4.1.0 中解決了。 PHP 中沒有整除的運(yùn)算符。1/2 產(chǎn)生出浮點(diǎn)數(shù) 0.5。您可以總是舍棄小數(shù)部分,或者使用 round() 函數(shù)。 轉(zhuǎn)換為整形要明示地將一個(gè)值轉(zhuǎn)換為 integer,用 (int) 或 (integer) 強(qiáng)制轉(zhuǎn)換。不過大多數(shù)情況下都不需要強(qiáng)制轉(zhuǎn)換,因?yàn)楫?dāng)運(yùn)算符,函數(shù)或流程控制需要一個(gè) integer 參數(shù)時(shí),值會(huì)自動(dòng)轉(zhuǎn)換。您還可以通過函數(shù) intval() 來將一個(gè)值轉(zhuǎn)換成整型。參見類型戲法。從布爾值轉(zhuǎn)換FALSE 將產(chǎn)生出 0(零),TRUE 將產(chǎn)生出 1(壹)。從浮點(diǎn)數(shù)轉(zhuǎn)換當(dāng)從浮點(diǎn)數(shù)轉(zhuǎn)換成整數(shù)時(shí),數(shù)字將被取整(丟棄小數(shù)位)。如果浮點(diǎn)數(shù)超出了整數(shù)范圍(通常為 +/- 2.15e+9 = 231),則結(jié)果不確定,因?yàn)闆]有足夠的精度使浮點(diǎn)數(shù)給出一個(gè)確切的整數(shù)結(jié)果。在此情況下沒有警告,甚至沒有任何通知!php學(xué)習(xí) (譯者注:)在 Linux 下返回結(jié)果是最小負(fù)數(shù)(-2147483648),而在 Windows 下返回結(jié)果是零(0)。 警告決不要將未知的分?jǐn)?shù)強(qiáng)制轉(zhuǎn)換為 integer,這樣有時(shí)會(huì)導(dǎo)致意外的結(jié)果。 更多信息見浮點(diǎn)數(shù)精度。 從字符串轉(zhuǎn)換參見字符串轉(zhuǎn)換為數(shù)字。從其它類型轉(zhuǎn)換注意沒有定義從其它類型轉(zhuǎn)換為整型的行為。目前的行為和值先轉(zhuǎn)換為布爾值一樣。不過不要依靠此行為,因?yàn)樗鼤?huì)未加通知地改變浮點(diǎn)型浮點(diǎn)數(shù)(也叫“floats”,“doubles”或“real numbers”)可以用以下任何語法定義: 形式上: LNUM0-9+DNUM(0-9*.LNUM) | (LNUM.0-9*)EXPONENT_DNUM ( (LNUM | DNUM) eE+-? LNUM) 浮點(diǎn)數(shù)的字長(zhǎng)和平臺(tái)相關(guān),盡管通常最大值是 1.8e308 并具有 14 位十進(jìn)制數(shù)字的精度(64 位 IEEE 格式)。 浮點(diǎn)數(shù)精度顯然簡(jiǎn)單的十進(jìn)制分?jǐn)?shù)如同 0.1 或 0.7 不能在不丟失一點(diǎn)點(diǎn)精度的情況下轉(zhuǎn)換為內(nèi)部二進(jìn)制的格式。這就會(huì)造成混亂的結(jié)果:例如,floor(0.1+0.7)*10) 通常會(huì)返回 7 而不是預(yù)期中的 8,因?yàn)樵摻Y(jié)果內(nèi)部的表示其實(shí)是類似 7.9999999999.。這和一個(gè)事實(shí)有關(guān),那就是不可能精確的用有限位數(shù)表達(dá)某些十進(jìn)制分?jǐn)?shù)。例如,十進(jìn)制的 1/3 變成了 0.3333333. . .。所以永遠(yuǎn)不要相信浮點(diǎn)數(shù)結(jié)果精確到了最后一位,也永遠(yuǎn)不要比較兩個(gè)浮點(diǎn)數(shù)是否相等。如果確實(shí)需要更高的精度,應(yīng)該使用任意精度數(shù)學(xué)函數(shù)庫或者 gmp 函數(shù)庫。 轉(zhuǎn)換為浮點(diǎn)數(shù)如果您希望了解有關(guān)何時(shí)和如何將字符串轉(zhuǎn)換成浮點(diǎn)數(shù)的信息,請(qǐng)查閱標(biāo)題為“將字符串轉(zhuǎn)換為數(shù)字”的有關(guān)章節(jié)。對(duì)于其它類型的值,其情況類似于先將值轉(zhuǎn)換成整型,然后再轉(zhuǎn)換成浮點(diǎn)。請(qǐng)參閱“轉(zhuǎn)換為整型”有關(guān)章節(jié)以獲取更多信息。字符串string 是一系列字符。在 PHP 中,字符和字節(jié)一樣,也就是說,一共有 256 種不同字符的可能性。這也暗示 PHP 對(duì) Unicode 沒有本地支持。請(qǐng)參閱函數(shù) utf8_encode() 和 utf8_decode() 以了解有關(guān) Unicode 支持。注: 一個(gè)字符串變得非常巨大也沒有問題,PHP 沒有給字符串的大小強(qiáng)加實(shí)現(xiàn)范圍,所以完全沒有理由擔(dān)心長(zhǎng)字符串。語法字符串可以用三種字面上的方法定義。單引號(hào)雙引號(hào)定界符單引號(hào)指定一個(gè)簡(jiǎn)單字符串的最簡(jiǎn)單的方法是用單引號(hào)(字符 )括起來。要表示一個(gè)單引號(hào),需要用反斜線()轉(zhuǎn)義,和很多其它語言一樣。如果在單引號(hào)之前或字符串結(jié)尾需要出現(xiàn)一個(gè)反斜線,需要用兩個(gè)反斜線表示。注意如果你試圖轉(zhuǎn)義任何其它字符,反斜線本身也會(huì)被顯示出來!所以通常不需要轉(zhuǎn)義反斜線本身。注: 在 PHP 3 中,此情況下將發(fā)出一個(gè) E_NOTICE 級(jí)的警告。注: 和其他兩種語法不同,單引號(hào)字符串中出現(xiàn)的變量和轉(zhuǎn)義序列不會(huì)被變量的值替代。 雙引號(hào)如果用雙引號(hào)()括起字符串,PHP 懂得更多特殊字符的轉(zhuǎn)義序列:表格 6-1. 轉(zhuǎn)義字符序列含義n換行(LF 或 ASCII 字符 0x0A(10)r回車(CR 或 ASCII 字符 0x0D(13)t水平制表符(HT 或 ASCII 字符 0x09(9)反斜線$美元符號(hào)雙引號(hào)0-71,3此正則表達(dá)式序列匹配一個(gè)用八進(jìn)制符號(hào)表示的字符 x0-9A-Fa-f1,2此正則表達(dá)式序列匹配一個(gè)用十六進(jìn)制符號(hào)表示的字符 此外,如果試圖轉(zhuǎn)義任何其它字符,反斜線本身也會(huì)被顯示出來!雙引號(hào)字符串最重要的一點(diǎn)是其中的變量名會(huì)被變量值替代。細(xì)節(jié)參見字符串解析。定界符另一種給字符串定界的方法使用定界符語法(“”)。應(yīng)該在 之后提供一個(gè)標(biāo)識(shí)符,然后是字符串,然后是同樣的標(biāo)識(shí)符結(jié)束字符串。結(jié)束標(biāo)識(shí)符必須從行的第一列開始。同樣,標(biāo)識(shí)符也必須遵循 PHP 中其它任何標(biāo)簽的命名規(guī)則:只能包含字母數(shù)字下劃線,而且必須以下劃線或非數(shù)字字符開始。 警告很重要的一點(diǎn)必須指出,結(jié)束標(biāo)識(shí)符所在的行不能包含任何其它字符,可能除了一個(gè)分號(hào)(;)之外。這尤其意味著該標(biāo)識(shí)符不能被縮進(jìn),而且在分號(hào)之前和之后都不能有任何空格或制表符。同樣重要的是要意識(shí)到在結(jié)束標(biāo)識(shí)符之前的第一個(gè)字符必須是你的操作系統(tǒng)中定義的換行符。例如在 Macintosh 系統(tǒng)中是 r。如果破壞了這條規(guī)則使得結(jié)束標(biāo)識(shí)符不“干凈”,則它不會(huì)被視為結(jié)束標(biāo)識(shí)符,PHP 將繼續(xù)尋找下去。如果在這種情況下找不到合適的結(jié)束標(biāo)識(shí)符,將會(huì)導(dǎo)致一個(gè)在腳本最后一行出現(xiàn)的語法錯(cuò)誤。 定界符文本表現(xiàn)的就和雙引號(hào)字符串一樣,只是沒有雙引號(hào)。這意味著在定界符文本中不需要轉(zhuǎn)義引號(hào),不過仍然可以用以上列出來的轉(zhuǎn)義代碼。變量會(huì)被展開,但當(dāng)在定界符文本中表達(dá)復(fù)雜變量時(shí)和字符串一樣同樣也要注意。 例子 6-2. 定界符字符串例子?php$str = foo = Foo;$this-bar = array(Bar1, Bar2, Bar3);$foo = new foo();$name = MyName;echo foo.Now, I am printing some $foo-bar1.This should print a capital A: x41EOT;? 注: 定界符支持是 PHP 4 中加入的。變量解析當(dāng)用雙引號(hào)或者定界符指定字符串時(shí),其中的變量會(huì)被解析。有兩種語法,一種簡(jiǎn)單的和一種復(fù)雜的。簡(jiǎn)單語法最通用和方便,它提供了解析變量,數(shù)組值,或者對(duì)象屬性的方法。復(fù)雜語法是 PHP 4 引進(jìn)的,可以用花括號(hào)括起一個(gè)表達(dá)式。簡(jiǎn)單語法如果遇到美元符號(hào)($),解析器會(huì)盡可能多地取得后面的字符以組成一個(gè)合法的變量名。如果你想明示指定名字的結(jié)束,用花括號(hào)把變量名括起來。 同樣也可以解析數(shù)組索引或者對(duì)象屬性。對(duì)于數(shù)組索引,右方括號(hào)()標(biāo)志著索引的結(jié)束。對(duì)象屬性則和簡(jiǎn)單變量適用同樣的規(guī)則,盡管對(duì)于對(duì)象屬性沒有像變量那樣的小技巧。php學(xué)習(xí) red, banana = yellow);/ Works but note that this works differently outside string-quotesecho A banana is $fruitsbanana.;/ Worksecho A banana is $fruitsbanana.;/ Works but PHP looks for a constant named banana first/ as described below.echo A banana is $fruitsbanana.;/ Wont work, use braces.This results in a parse error.echo A banana is $fruitsbanana.;/ Worksecho A banana is . $fruitsbanana . .;/ Worksecho This square is $square-width meters broad.;/ Wont work. For a solution, see the complex syntax.echo This square is $square-width00 centimeters broad.;? 對(duì)于任何更復(fù)雜的情況,應(yīng)該使用復(fù)雜語法。復(fù)雜(花括號(hào))語法不是因?yàn)檎Z法復(fù)雜而稱其為復(fù)雜,而是因?yàn)橛么朔椒梢园瑥?fù)雜的表達(dá)式。事實(shí)上,用此語法你可以在字符串中包含任何在名字空間的值。僅僅用和在字符串之外同樣的方法寫一個(gè)表達(dá)式,然后用 和 把它包含進(jìn)來。因?yàn)椴荒苻D(zhuǎn)義“”,此語法僅在 $ 緊跟在 后面時(shí)被識(shí)別(用“$”或者“$”來得到一個(gè)字面上的“$”)。用一些例子可以更清晰: width00 centimeters broad.;/ Worksecho This works: $arr43;/ This is wrong for the same reason as $foobar is wrong/ outside a string.In otherwords, it will still work but/ because PHP first looks for a constant named foo, it will/ throw an error of level E_NOTICE (undefined constant).echo This is wrong: $arrfoo3;/ Works.When using multi-dimensional arrays, always use/ braces around arrays when inside of stringsecho This works: $arrfoo3;/ Works.echo This works: . $arrfoo3;echo You can even write $obj-values3-name;echo This is the value of the var named $name: $name;? 訪問字符串中的字符字符串中的字符可以通過在字符串之后用花括號(hào)指定所要字符從零開始的偏移量來訪問。注: 為了向下兼容,仍然可以用方括號(hào)。不過此語法在 PHP 4 中不贊成使用。 例子 6-3. 一些字符串例子 實(shí)用函數(shù)及操作符字符串可以用“.”(點(diǎn))運(yùn)算符連接。注意這里不能用“+”(加)運(yùn)算符。更多信息參見字符串運(yùn)算符。有很多實(shí)用函數(shù)來改變字符串。php學(xué)習(xí) 普通函數(shù)見字符串函數(shù)庫一節(jié),高級(jí)搜索和替換見正則表達(dá)式函數(shù)(兩種口味:Perl 和 POSIX 擴(kuò)展)。還有 URL 字符串函數(shù),以及加密解密字符串的函數(shù)(mcrypt 和 mhash)。最后,如果還是找不到你要的函數(shù),參見字符類型函數(shù)庫。字符串轉(zhuǎn)換您可以用 (string) 標(biāo)記或者 strval() 函數(shù)將一個(gè)值轉(zhuǎn)換為字符串。當(dāng)某表達(dá)式需要字符串時(shí),字符串的轉(zhuǎn)換會(huì)在表達(dá)式范圍內(nèi)自動(dòng)完成。例如當(dāng)你使用 echo() 或者 print() 函數(shù)時(shí),或者將一個(gè)變量值與一個(gè)字符串進(jìn)行比較的時(shí)候。閱讀手冊(cè)中有關(guān)類型和類型戲法中的部分有助于更清楚一些。參見 settype()。布爾值 TRUE 將被轉(zhuǎn)換為字符串 1,而值 FALSE 將被表示為 (即空字符串)。這樣您就可以隨意地在布爾值和字符串之間進(jìn)行比較。整數(shù)或浮點(diǎn)數(shù)數(shù)值在轉(zhuǎn)換成字符串時(shí),字符串即為表示這些數(shù)值數(shù)字(浮點(diǎn)數(shù)還包含有指數(shù)部分)。數(shù)組將被轉(zhuǎn)換成字符串 Array,因此您無法通過 echo() 或者 print() 函數(shù)來輸出數(shù)組的內(nèi)容。請(qǐng)參考下文以獲取更多提示。對(duì)象將被轉(zhuǎn)換成字符串 Object。如果您因?yàn)檎{(diào)試需要,需要將對(duì)象的成員變量打印出來,請(qǐng)閱讀下文。如果您希望得到該對(duì)象所依附的類的名稱,請(qǐng)使用函數(shù) get_class()。資源類型將會(huì)以 Resource id #1 的格式被轉(zhuǎn)換成字符串,其中 1 是 PHP 在運(yùn)行時(shí)給資源指定的唯一標(biāo)識(shí)。如果您希望獲取資源的類型,請(qǐng)使用函數(shù) get_resource_type().NULL 將被轉(zhuǎn)換成空字符串。正如以上所示,將數(shù)組、對(duì)象或者資源打印出來,并不能給您提供任何關(guān)于這些值本身的有用的信息。請(qǐng)參閱函數(shù) print_r() 和 var_dump(),對(duì)于調(diào)試來說,這些是更好的打印值的方法。您可以將 PHP 的值轉(zhuǎn)換為字符串以永久地儲(chǔ)存它們。這種方法被稱為串行化,您可以用函數(shù) serialize() 來完成該操作。如果您在安裝 PHP 時(shí)建立了 WDDX 支持,您還可以將 PHP 的值串行化為 XML 結(jié)構(gòu)。字符串轉(zhuǎn)換為數(shù)值當(dāng)一個(gè)字符串被當(dāng)作數(shù)字來求值時(shí),根據(jù)以下規(guī)則來決定結(jié)果的類型和值。如果包括“.”,“e”或“E”其中任何一個(gè)字符的話,字符串被當(dāng)作 float 來求值。否則就被當(dāng)作整數(shù)。該值由字符串最前面的部分決定。如果字符串以合法的數(shù)字?jǐn)?shù)據(jù)開始,就用該數(shù)字作為其值,否則其值為 0(零)。合法數(shù)字?jǐn)?shù)據(jù)由可選的正負(fù)號(hào)開始,后面跟著一個(gè)或多個(gè)數(shù)字(可選地包括十進(jìn)制分?jǐn)?shù)),后面跟著可選的指數(shù)。指數(shù)是一個(gè)“e”或者“E”后面跟著一個(gè)或多個(gè)數(shù)字。 此轉(zhuǎn)換的更多信息見 Unix 手冊(cè)中關(guān)于 strtod(3) 的部分。如果你想測(cè)試本節(jié)中的任何例子,可以拷貝和粘貼這些例子并且加上下面這一行自己看看會(huì)發(fā)生什么: ?phpecho $foo=$foo; type is . gettype ($foo) . n;? 不要指望在將一個(gè)字符轉(zhuǎn)換成整型時(shí)能夠得到該字符的編碼(您可能也會(huì)在 C 中這么做)。如果您希望在字符編碼和字符之間轉(zhuǎn)換,請(qǐng)使用 ord() 和 chr() 函數(shù)。數(shù)組PHP 中的數(shù)組實(shí)際上是一個(gè)有序圖。圖是一種把 values 映射到 keys 的類型。此類型在很多方面做了優(yōu)化,因此你可以把它當(dāng)成真正的數(shù)組來使用,或列表(矢量),散列表(是圖的一種實(shí)現(xiàn)),字典,集合,棧,隊(duì)列以及更多可能性。因?yàn)榭梢杂昧硪粋€(gè) PHP 數(shù)組作為值,也可以很容易地模擬樹。解釋這些結(jié)構(gòu)超出了本手冊(cè)的范圍,但對(duì)于每種結(jié)構(gòu)你至少會(huì)發(fā)現(xiàn)一個(gè)例子。要得到這些結(jié)構(gòu)的更多信息,我們建議你參考有關(guān)此廣闊主題的外部著作。語法定義 array()可以用 array() 語言結(jié)構(gòu)來新建一個(gè) array。它接受一定數(shù)量用逗號(hào)分隔的 key = value 參數(shù)對(duì)。 array( key =value, .)/ key 可以是 integer 或者 string/ value 可以是任何值 bar, 12 = true);echo $arrfoo; / barecho $arr12;/ 1? key 可以是 integer 或者 string。如果鍵名是一個(gè) integer 的標(biāo)準(zhǔn)表達(dá)方法,則被解釋為整數(shù)(例如 8 將被解釋為 8,而 08 將被解釋為 08)。PHP 中數(shù)組下標(biāo)的變量類型不會(huì)對(duì)數(shù)組造成影響,數(shù)組的類型只有一種,它可以同時(shí)包含整型和字符串型的下標(biāo)。值可以是任何值。 array(6 = 5, 13 = 9, a = 42);echo $arrsomearray6;/ 5echo $arrsomearray13;/ 9echo $arrsomearraya;/ 42? 如果對(duì)給出的值沒有指定鍵名,則取當(dāng)前最大的整數(shù)索引值,而新的鍵名將是該值加一。如果你指定的鍵名已經(jīng)有了值,則該值會(huì)被覆蓋。 43, 32, 56, b = 12);/ .this arrayarray(5 = 43, 6 = 32, 7 = 56, b = 12);? 警告自 PHP 4.3.0 起,上述的索引生成方法改變了。如今如果你給一個(gè)當(dāng)前最大鍵名是負(fù)值的數(shù)組添加一個(gè)新值,則新生成的的索引將為零(0)。以前新生成的索引為當(dāng)前最大索引加一,和正值的索引相同。 使用 TRUE 作為鍵名將使 integer 1 成為鍵名。使用 FALSE 作為鍵名將使 integer 0 成為鍵名。使用 NULL 作為鍵名將等同于使用空字符串。使用空字符串作為鍵名將新建(或覆蓋)一個(gè)用空字符串作為鍵名的值,這和用空的方括號(hào)不一樣。不能用數(shù)組和對(duì)象作為鍵名。這樣做會(huì)導(dǎo)致一個(gè)警告:Illegal offset type。用方括號(hào)的語法新建修改可以通過明示地設(shè)定值來改變一個(gè)現(xiàn)有的數(shù)組。這是通過在方括號(hào)內(nèi)指定鍵名來給數(shù)組賦值實(shí)現(xiàn)的。也可以省略鍵名,在這種情況下給變量名加上一對(duì)空的方括號(hào)(“”)。 php學(xué)習(xí) $arrkey = value;$arr = value;/ key 可以是 integer 或者 string/ value 可以為任何值。如果 $arr 還不存在,將會(huì)新建一個(gè)。這也是一種定義數(shù)組的替換方法。要改變一個(gè)值,只要給它賦一個(gè)新值。如果要?jiǎng)h除一個(gè)鍵名值對(duì),要對(duì)它用 unset()。 1, 12 = 2);$arr = 56;/ This is the same as $arr13 = 56;/ at this point of the script$arrx = 42; / This adds a new element to/ the array with key xunset($arr5); / This removes the element from the arrayunset($arr);/ This deletes the whole array? 注: 如上所述,如果你給出方括號(hào)但沒有指定鍵名,則取當(dāng)前最大整數(shù)索引值,新的鍵名將是該值 + 1。如果當(dāng)前還沒有整數(shù)索引,則鍵名將為 0。如果制定的鍵名已經(jīng)有值了,該值將被覆蓋。 警告自 PHP 4.3.0 起,上述的索引生成方法改變了。如今如果你給一個(gè)當(dāng)前最大鍵名是負(fù)值的數(shù)組添加一個(gè)新值,則新生成的的索引將為零(0)。以前新生成的索引為當(dāng)前最大索引加一,和正值的索引相同。 注意這里所使用的最大整數(shù)鍵名不一定當(dāng)前就在數(shù)組中。它只要在上次數(shù)組重新生成索引后曾經(jīng)存在過就行了。以下例子說明了: $value) unset($array$i);print_r($array);/ 添加一個(gè)單元(注意新的鍵名是 5,而不是你可能以為的 0)$array = 6;print_r($array);/ 重新索引:$array = array_values($array);$array = 7;print_r($array);? 以上例子將產(chǎn)生如下輸出: Array(0 = 11 = 22 = 33 = 44 = 5)Array()Array(5 = 6)Array(0 = 61 = 7)實(shí)用函數(shù)有相當(dāng)多的實(shí)用函數(shù)作用于數(shù)組,參見數(shù)組函數(shù)庫一節(jié)。注: unset() 函數(shù)允許取消一個(gè)數(shù)組中的鍵名。要注意數(shù)組將不會(huì)重建索引。 one, 2 = two, 3 = three );unset( $a2 );/* 將產(chǎn)生一個(gè)數(shù)組,定義為$a = array( 1=one, 3=three);而不是$a = array( 1 = one, 2 = three);*/$b = array_values($a);/ Now b is array(1 = one, 2 =three)? foreach 控制結(jié)構(gòu)是專門用于數(shù)組的。它提供了一個(gè)簡(jiǎn)單的方法來遍歷數(shù)組。數(shù)組做什么和不做什么為什么 $foobar 錯(cuò)了?應(yīng)該始終在用字符串表示的數(shù)組索引上加上引號(hào)。例如用 $foobar 而不是 $foobar。但是為什么 $foobar 錯(cuò)了呢?你可能在老的腳本中見過如下語法: 這樣是錯(cuò)的,但可以正常運(yùn)行。那么為什么錯(cuò)了呢?原因是此代碼中有一個(gè)未定義的常量(bar)而不是字符串(bar注意引號(hào)),而 PHP 可能會(huì)在以后定義此常量,不幸的是你的代碼中有同樣的名字。它能

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論