PHP編程基礎(chǔ)與實(shí)例教程第3版PPT完整全套教學(xué)課件_第1頁(yè)
PHP編程基礎(chǔ)與實(shí)例教程第3版PPT完整全套教學(xué)課件_第2頁(yè)
PHP編程基礎(chǔ)與實(shí)例教程第3版PPT完整全套教學(xué)課件_第3頁(yè)
PHP編程基礎(chǔ)與實(shí)例教程第3版PPT完整全套教學(xué)課件_第4頁(yè)
PHP編程基礎(chǔ)與實(shí)例教程第3版PPT完整全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩394頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PHP編程基礎(chǔ)與實(shí)例教程第三版

PHPFundamentals&Practices3ndEdition第1章PHP入門

本章大綱1-1PHP概況1-2Web開發(fā)基礎(chǔ)知識(shí)1-3

HTML程序和PHP程序的執(zhí)行流程

1-1PHP概況1.

PHP的優(yōu)勢(shì)PHP發(fā)展到今天,具備了很多優(yōu)勢(shì)。(1)易學(xué)好用(2)免費(fèi)開源(3)良好的可擴(kuò)展性(4)平臺(tái)無(wú)關(guān)性(跨平臺(tái))(5)功能全面(6)數(shù)據(jù)庫(kù)支持(7)支持面向?qū)ο缶幊?-2

Web開發(fā)基礎(chǔ)知識(shí)動(dòng)態(tài)網(wǎng)站開發(fā)也叫作Web開發(fā),本質(zhì)是基于B/S網(wǎng)絡(luò)架構(gòu)的軟件開發(fā)。1.

瀏覽器B/S中的B,表示瀏覽器,也稱為Web瀏覽器,主要功能是顯示HTML程序,并讓瀏覽器用戶與HTML程序產(chǎn)生互動(dòng)。1-2

Web開發(fā)基礎(chǔ)知識(shí)2.

服務(wù)器服務(wù)器種類繁多,有Web服務(wù)器、DNS服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、文件服務(wù)器等,B/S中的S特指Web服務(wù)器,也稱為WWW(WorldWideWeb)服務(wù)器。Web服務(wù)器就是安裝了Web服務(wù)軟件的計(jì)算機(jī),常用的Web服務(wù)軟件有Apache、Nginx和IIS。1-2

Web開發(fā)基礎(chǔ)知識(shí)2.

服務(wù)器Apache服務(wù)器主要提供4個(gè)功能。(1)存儲(chǔ)資源文件。(2)接收HTTP請(qǐng)求數(shù)據(jù)。(3)定位資源文件。(4)返回HTTP響應(yīng)數(shù)據(jù)。1-2

Web開發(fā)基礎(chǔ)知識(shí)3.

靜態(tài)資源文件和動(dòng)態(tài)資源文件靜態(tài)代碼與動(dòng)態(tài)代碼的界定是相對(duì)于瀏覽器而言的。瀏覽器能夠直接解釋執(zhí)行的代碼屬于靜態(tài)代碼,反之則屬于動(dòng)態(tài)代碼。文本、HTML代碼、CSS代碼、JavaScript代碼等屬于靜態(tài)代碼,PHP代碼屬于動(dòng)態(tài)代碼。

1-2

Web開發(fā)基礎(chǔ)知識(shí)3.

靜態(tài)資源文件和動(dòng)態(tài)資源文件Apache服務(wù)器只能處理靜態(tài)代碼,對(duì)于PHP代碼,Apache服務(wù)器無(wú)能為力。Apache服務(wù)器是如何區(qū)分靜態(tài)代碼與PHP代碼呢?解決思路如下。(1)無(wú)論是靜態(tài)代碼還是PHP代碼,都需要寫入程序文件中,程序文件屬于資源文件。(2)如果資源文件的擴(kuò)展名是.php,Apache服務(wù)器則認(rèn)為該資源文件屬于動(dòng)態(tài)資源文件,否則屬于靜態(tài)資源文件。(3)對(duì)于PHP程序,Apache服務(wù)器將其交給PHP預(yù)處理器解釋執(zhí)行。(4)PHP預(yù)處理器執(zhí)行PHP程序,將執(zhí)行結(jié)果(靜態(tài)代碼)返回給Apache服務(wù)器。1.3HTML程序和PHP程序的執(zhí)行流程HTML程序?qū)儆陟o態(tài)資源文件,瀏覽器能夠直接解釋執(zhí)行;PHP程序?qū)儆趧?dòng)態(tài)資源文件,瀏覽器不能直接解釋執(zhí)行。1.3HTML程序和PHP程序的執(zhí)行流程1.

HTML程序

1.3HTML程序和PHP程序的執(zhí)行流程1.

HTML程序

1.3HTML程序和PHP程序的執(zhí)行流程2.

PHP程序

1.3HTML程序和PHP程序的執(zhí)行流程2.

PHP程序“?>”表示退出PHP代碼模式并進(jìn)入HTML代碼模式。如果“?>”之后沒有其他任何代碼,“?>”可以省略,否則不可以省略,例如示例程序中的“?>”可以省略。1.3HTML程序和PHP程序的執(zhí)行流程3.

存在靜態(tài)代碼的PHP程序

1.3HTML程序和PHP程序的執(zhí)行流程4.靜態(tài)資源文件和PHP程序的執(zhí)行流程

實(shí)踐任務(wù)上機(jī)實(shí)踐1安裝、啟動(dòng)和關(guān)閉Apache服務(wù)上機(jī)實(shí)踐1安裝、啟動(dòng)和關(guān)閉Apache服務(wù)上機(jī)實(shí)踐2編寫HTML程序和PHP程序上機(jī)實(shí)踐3安裝PHP預(yù)處理器上機(jī)實(shí)踐4Apache以加載模塊方式自動(dòng)加載PHP預(yù)處理器上機(jī)實(shí)踐5設(shè)置PHP預(yù)處理器的時(shí)區(qū)上機(jī)實(shí)踐6配置Apache服務(wù)上機(jī)實(shí)踐7查看PHP的配置信息 上機(jī)實(shí)踐8查看Web服務(wù)器端口號(hào)占用情況上機(jī)實(shí)踐9

了解字符編碼對(duì)于程序的重要性PHP編程基礎(chǔ)與實(shí)例教程第三版

PHPFundamentals&Practices3ndEdition第2章PHP基礎(chǔ)知識(shí)

本章大綱2-1PHP代碼基礎(chǔ)知識(shí)2-2賦值語(yǔ)句和變量2-3自定義常量和預(yù)定義常量2-4數(shù)據(jù)類型2-5數(shù)據(jù)的輸出2-6編程規(guī)范2-1PHP代碼基礎(chǔ)知識(shí)“<?php”開始、到“?>”結(jié)束的代碼是PHP代碼,“<?php”和“?>”之外的代碼是靜態(tài)代碼,通常情況下,“<?php”和“?>”必須成對(duì)出現(xiàn)。2-1PHP代碼基礎(chǔ)知識(shí)

1.

PHP標(biāo)記的簡(jiǎn)寫

PHP預(yù)處理器執(zhí)行“<?php”和“?>”之間的PHP代碼,“<?php”和“?>”之外的靜態(tài)代碼按原樣輸出。只有將php.ini文件中的short_open_tag配置參數(shù)設(shè)置為On時(shí),“<?=?>”才會(huì)生效。2-1PHP代碼基礎(chǔ)知識(shí)

1.

PHP標(biāo)記的簡(jiǎn)寫

“?>”表示退出PHP代碼模式進(jìn)入HTML代碼模式。

如果“?>”之后沒有其他任何代碼,“?>”可以省略,否則不可以省略。省略“?>”的優(yōu)點(diǎn)在于:可以避免Web開發(fā)人員無(wú)意在“?>”的后面輸出不可見字符(例如空格或換行)。

第1個(gè)PHP代碼向?yàn)g覽器返回3字節(jié)的內(nèi)容,第2個(gè)PHP代碼向?yàn)g覽器返回3+1=4字節(jié)的內(nèi)容。2-1PHP代碼基礎(chǔ)知識(shí)

2.

PHP語(yǔ)句及語(yǔ)句塊

2-1PHP代碼基礎(chǔ)知識(shí)

2.

PHP語(yǔ)句及語(yǔ)句塊4個(gè)PHP代碼等效2-1PHP代碼基礎(chǔ)知識(shí)

3.

PHP代碼注釋和HTML代碼注釋PHP支持如下3種PHP代碼注釋風(fēng)格。PHP代碼第1種注釋風(fēng)格:/*多行注釋風(fēng)格*/PHP代碼第2種注釋風(fēng)格://單行注釋風(fēng)格PHP代碼第3種注釋風(fēng)格:#單行注釋風(fēng)格HTML只有一種代碼注釋風(fēng)格。以“<!--”開始,以“-->”結(jié)束2-1PHP代碼基礎(chǔ)知識(shí)

3.

PHP代碼注釋和HTML代碼注釋2-1PHP代碼基礎(chǔ)知識(shí)

4.

PHP代碼的分解與合并2-2賦值語(yǔ)句和變量PHP程序使用變量和常量存儲(chǔ)數(shù)據(jù)。變量分為自定義變量和預(yù)定義變量(PredefinedVariables)。

自定義變量須Web開發(fā)人員定義后才能使用。

預(yù)定義變量無(wú)須定義可直接使用,$GLOBALS、$_SERVER、$_GET、$_POST、$_FILES、$_COOKIE、$_SESSION、$_REQUEST和$_ENV都是預(yù)定義變量。2-2賦值語(yǔ)句和變量1.

標(biāo)識(shí)符和標(biāo)識(shí)符的命名規(guī)則標(biāo)識(shí)符是一個(gè)名字,只能以字母(A-Z/a-z)或下劃線(_)開頭,其余部分可以包含字母(A-Z/a-z)、下劃線(_)或者數(shù)字。PHP的標(biāo)識(shí)符是大小寫敏感的,這就意味著“studentName”和“studentname”是兩個(gè)不同的標(biāo)識(shí)符。2-2賦值語(yǔ)句和變量1.

標(biāo)識(shí)符和標(biāo)識(shí)符的命名規(guī)則有時(shí)需要將多個(gè)英文單詞拼接起來(lái)組成一個(gè)標(biāo)識(shí)符,有以下兩種拼接方法。(1)從第二個(gè)單詞開始,每個(gè)單詞的首字母大寫,例如“studentName”“teacherName”等。(2)使用下劃線作為單詞分隔符,例如“student_name”“teacher_name”等。2-2賦值語(yǔ)句和變量2.

賦值語(yǔ)句和變量賦值語(yǔ)句的功能是將“=”右邊的變量值賦給左邊的變量名,執(zhí)行過程是先執(zhí)行“=”右邊的代碼,再執(zhí)行“=”左邊的代碼,最后執(zhí)行“=”。①“=”右邊的代碼負(fù)責(zé)在“堆內(nèi)存”中申請(qǐng)存儲(chǔ)空間存儲(chǔ)數(shù)據(jù)或重用已有的數(shù)據(jù)。②“=”左邊的代碼的執(zhí)行流程是先在“當(dāng)前命名空間”中查找變量名,如果不能找到則在“當(dāng)前命名空間”中創(chuàng)建變量名;如果能夠找到則重用已有變量名。③“=”負(fù)責(zé)為變量值貼上“變量名”標(biāo)簽。2-2賦值語(yǔ)句和變量2.

賦值語(yǔ)句和變量

執(zhí)行到第1條PHP語(yǔ)句時(shí)2-2賦值語(yǔ)句和變量2.

賦值語(yǔ)句和變量

執(zhí)行到第2條PHP語(yǔ)句時(shí)2-2賦值語(yǔ)句和變量2.

賦值語(yǔ)句和變量

執(zhí)行到第3條PHP語(yǔ)句時(shí)2-2賦值語(yǔ)句和變量3.

手動(dòng)刪除變量名

執(zhí)行到第2條PHP語(yǔ)句時(shí)2-2賦值語(yǔ)句和變量4.

變量賦值方法

(1)傳值賦值2-2賦值語(yǔ)句和變量4.

變量賦值方法

(2)傳引用(&)賦值2-2賦值語(yǔ)句和變量5.

可變變量可變變量的工作原理是用一個(gè)變量的“值”作為另一個(gè)變量的“名”。2-3自定義常量和預(yù)定義常量1.

自定義常量define函數(shù)專門用于定義自定義常量,語(yǔ)法格式如下。define(string$constant_name,mixed$value,bool$case_insensitive=false):bool2-3自定義常量和預(yù)定義常量1.

自定義常量常量的定義及注意事項(xiàng)。(1)常量名被放入常量存儲(chǔ)區(qū)。2-3自定義常量和預(yù)定義常量1.

自定義常量常量的定義及注意事項(xiàng)。(2)PHP預(yù)處理器將裸字符串解析為常量名。2-3自定義常量和預(yù)定義常量2.

預(yù)定義常量:無(wú)須定義便可直接使用。(1)__FILE__:當(dāng)前正在被執(zhí)行的PHP程序名。(2)__LINE__:PHP程序的當(dāng)前行號(hào)。(3)__DIR__:當(dāng)前正在被執(zhí)行的PHP程序所在的目錄,該目錄是絕對(duì)路徑,等效于dirname(__FILE__)。需要注意,__DIR__的返回值不以“/”結(jié)尾,在字符串拼接時(shí),需要在__DIR__的末尾手動(dòng)添加目錄分隔符“/”。(4)__FUNCTION__:當(dāng)前正在被執(zhí)行的函數(shù)名。(5)__CLASS__:當(dāng)前正在被執(zhí)行的類名。(6)__METHOD__:當(dāng)前正在被執(zhí)行的方法名。(7)PHP_VERSION:當(dāng)前PHP預(yù)處理器的版本號(hào)。(8)PHP_OS:PHP預(yù)處理器所在的操作系統(tǒng)類型。2-4數(shù)據(jù)類型2-5數(shù)據(jù)的輸出1.

print和echo它們之間的區(qū)別總結(jié)如下。(1)使用echo可以同時(shí)輸出多個(gè)字符串(多個(gè)字符串之間使用逗號(hào)隔開即可),而print每次只能輸出一個(gè)字符串。(2)echo是語(yǔ)句不是表達(dá)式;print是函數(shù),是表達(dá)式。在print前可以使用錯(cuò)誤抑制運(yùn)算符“@”,而echo不能。2-5數(shù)據(jù)的輸出2.

print_r函數(shù)對(duì)于復(fù)合數(shù)據(jù)類型的數(shù)據(jù)輸出,經(jīng)常使用print_r函數(shù)。使用print_r函數(shù)輸出數(shù)組或?qū)ο蟮膬?nèi)容時(shí),將按照“鍵=>值”或“實(shí)例屬性=>值”的方式輸出。2-5數(shù)據(jù)的輸出3.

var_dump函數(shù)var_dump函數(shù)的語(yǔ)法格式如下所示,用于輸出一個(gè)或多個(gè)數(shù)據(jù)的結(jié)構(gòu)化信息(包括數(shù)據(jù)類型和值)。var_dump(mixedvalue1,mixedvalue2...)2-5數(shù)據(jù)的輸出4.

var_export函數(shù)var_export函數(shù)的返回值是有效的PHP代碼。2-6編程規(guī)范俗話說(shuō),沒有規(guī)矩,不成方圓。養(yǎng)成良好的編程習(xí)慣,能夠提高代碼的易讀性;而不良的編程習(xí)慣會(huì)造成代碼缺陷,使其難以閱讀和維護(hù),并且很可能在維護(hù)時(shí)又引入新的缺陷。書寫PHP代碼時(shí)需要遵循一些基本的編程原則,這些原則稱為編程規(guī)范。2-6編程規(guī)范1.

書寫規(guī)范

(1)縮進(jìn)

(2)大括號(hào){}

(3)運(yùn)算符2.

命名規(guī)范

(1)類

(2)常量

(3)變量名

(4)數(shù)組名

(5)函數(shù)名

(6)與數(shù)據(jù)庫(kù)相關(guān)的命名

(7)類文件實(shí)踐任務(wù)上機(jī)實(shí)踐PHP基礎(chǔ)知識(shí)PHP編程基礎(chǔ)與實(shí)例教程第三版

PHPFundamentals&Practices3ndEdition第3章PHP表達(dá)式

本章大綱3-1表達(dá)式和語(yǔ)句3-2變量和常量狀態(tài)信息的函數(shù)3-3運(yùn)算符3-4數(shù)據(jù)類型的轉(zhuǎn)換3-1表達(dá)式和語(yǔ)句PHP是一種面向表達(dá)式的編程語(yǔ)言(expression-orientedlanguage),幾乎PHP中的一切都是表達(dá)式(expression)。表達(dá)式是PHP程序最為重要的組成部分,表達(dá)式指的是將相同數(shù)據(jù)類型或不同數(shù)據(jù)類型的數(shù)據(jù)(如變量、常量、函數(shù)等),用運(yùn)算符號(hào)按一定的規(guī)則連接起來(lái)的、有意義的式子。3-1表達(dá)式和語(yǔ)句表達(dá)式通常由操作數(shù)和運(yùn)算符構(gòu)成,例如“3+4”是一個(gè)表達(dá)式,該表達(dá)式中“+”是一個(gè)運(yùn)算符,“3”和“4”是操作數(shù)。表達(dá)式后跟一個(gè)分號(hào)“;”則變?yōu)檎Z(yǔ)句(statement)。例如“變量名=變量值”是一個(gè)賦值表達(dá)式,“變量名=變量值;”是一條賦值語(yǔ)句。3-1表達(dá)式和語(yǔ)句表達(dá)式和語(yǔ)句的區(qū)別是,表達(dá)式通常有返回值,語(yǔ)句通常沒有返回值。表達(dá)式可以用作函數(shù)的參數(shù),語(yǔ)句不可以用作函數(shù)的參數(shù)。另外,在PHP中函數(shù)是一個(gè)具有返回值的表達(dá)式。3-2變量和常量狀態(tài)信息的函數(shù)1.

檢查常量或變量是否定義使用defined函數(shù)可以檢查常量是否定義,使用isset函數(shù)可以檢查變量是否定義。

(1)defined函數(shù)語(yǔ)法格式:defined(stringname):bool函數(shù)功能:檢查名字是name的常量是否定義。name參數(shù)必須是符合標(biāo)識(shí)符命名規(guī)則的字符串。函數(shù)的返回值:布爾值。名字是name的常量如果已經(jīng)定義,則函數(shù)返回true,否則返回false。3-2變量和常量狀態(tài)信息的函數(shù)1.

檢查常量或變量是否定義

(1)isset函數(shù)語(yǔ)法格式:isset(mixed$value1,mixed$value2...):bool函數(shù)功能:檢查一個(gè)或多個(gè)變量是否定義(且不是null)。函數(shù)的參數(shù)是變量名(帶$符號(hào))。函數(shù)的返回值:布爾值。如果變量已經(jīng)定義、且不是null,則函數(shù)返回true,否則返回false。3-2變量和常量狀態(tài)信息的函數(shù)2.

檢查變量值是否為“空”的函數(shù)

(1)is_null函數(shù)語(yǔ)法格式:is_null(mixed$value):bool函數(shù)功能:檢查變量$value的值是否是null,如果是null,則返回true;否則返回false。

(2)empty函數(shù)語(yǔ)法格式:empty(mixed$var):bool函數(shù)功能:檢查變量$var的值是否為“空”。函數(shù)的返回值:布爾值。如果變量$var的值為空,則返回true,否則返回false。3-2變量和常量狀態(tài)信息的函數(shù)2.

檢查變量值是否為“空”的函數(shù)

整數(shù)0、浮點(diǎn)數(shù)0.0、字符串零"0"、空字符串""、null、false、空數(shù)組array()、變量未定義、或者變量經(jīng)unset函數(shù)處理后,都被視為“空”。

空字符串""為empty,空格字符串""不是empty。3-2變量和常量狀態(tài)信息的函數(shù)3.

查看變量或常量的數(shù)據(jù)類型

使用gettype函數(shù),可以查看變量或常量的數(shù)據(jù)類型。

語(yǔ)法格式:gettype(mixedvalue):string

函數(shù)功能:gettype函數(shù)用于獲取數(shù)據(jù)value的數(shù)據(jù)類型。數(shù)據(jù)value可以是變量(帶$符號(hào)),也可以是常量value(不帶$符號(hào))。

函數(shù)的返回值:字符串。例如"boolean"、"integer"、"double"、"string"、"array"、"object"、"resource"、"resource(closed)"、"NULL"、"unknowntype"。3-2變量和常量狀態(tài)信息的函數(shù)4.

數(shù)據(jù)類型檢查函數(shù)

3-3運(yùn)算符1.

算術(shù)運(yùn)算符

3-3運(yùn)算符2.

遞增/遞減運(yùn)算符

3-3運(yùn)算符3.

賦值運(yùn)算符4.

比較運(yùn)算符

3-3運(yùn)算符5.

邏輯運(yùn)算符

3-3運(yùn)算符6.

錯(cuò)誤抑制運(yùn)算符

PHP中的錯(cuò)誤抑制運(yùn)算符是“@”,將“@”放置在表達(dá)式之前,該表達(dá)式產(chǎn)生的錯(cuò)誤信息將不會(huì)輸出,這樣做有以下兩個(gè)好處。(1)安全:避免錯(cuò)誤信息外露,造成系統(tǒng)漏洞。(2)美觀:避免瀏覽器頁(yè)面出現(xiàn)錯(cuò)誤信息,影響頁(yè)面美觀。

3-3運(yùn)算符7.

字符串連接運(yùn)算符

字符串連接運(yùn)算符只有一個(gè)點(diǎn)運(yùn)算符“.”,使用“.”運(yùn)算符可以將兩個(gè)字符串連接成一個(gè)字符串。

3-3運(yùn)算符8.

條件運(yùn)算符

條件運(yùn)算符的語(yǔ)法格式是“exp1?exp2:exp3”。

由條件運(yùn)算符組成的表達(dá)式稱為條件表達(dá)式,條件表達(dá)式的執(zhí)行過程為:如果表達(dá)式exp1的值為true,則整個(gè)條件表達(dá)式的值為表達(dá)式exp2的值;如果表達(dá)式exp1的值為false,則整個(gè)條件表達(dá)式的值為表達(dá)式exp3的值。

3-3運(yùn)算符9.

null合并運(yùn)算符

null合并運(yùn)算符的語(yǔ)法格式是“(exp1)??(exp2)”。

由null合并運(yùn)算符組成的表達(dá)式稱為null合并表達(dá)式,null合并表達(dá)式的執(zhí)行過程為:如果表達(dá)式exp1的值是null或者未定義,則整個(gè)null合并表達(dá)式的值為表達(dá)式exp2的值;否則是表達(dá)式exp1的值。

null合并運(yùn)算符與下面的代碼等效。

isset(exp1)?exp1:exp2

3-3運(yùn)算符10.

執(zhí)行運(yùn)算符

執(zhí)行運(yùn)算符是成對(duì)的反引號(hào)“`”,注意這不是單引號(hào),一般是鍵盤Esc下面的按鍵。

執(zhí)行運(yùn)算符嘗試將反引號(hào)中的“字符串”作為shell命令執(zhí)行(如Linux的shell命令或Windows的DOS命令),并返回shell命令的執(zhí)行結(jié)果。

3-3運(yùn)算符11.

類型運(yùn)算符

instanceof是PHP的類型運(yùn)算符,用于判斷一個(gè)對(duì)象是否是某個(gè)類的對(duì)象。

類型運(yùn)算符instanceof等效于is_a函數(shù),例如代碼is_a($a,"A")判斷$a是否是類A的對(duì)象。

3-3運(yùn)算符11.

運(yùn)算符優(yōu)先級(jí)

一個(gè)復(fù)雜的表達(dá)式往往包含多種運(yùn)算符。計(jì)算表達(dá)式的值時(shí),高優(yōu)先級(jí)的運(yùn)算符會(huì)先被執(zhí)行,低優(yōu)先級(jí)的運(yùn)算符會(huì)后被執(zhí)行。PHP中運(yùn)算符的優(yōu)先級(jí)由高到低的順序如表所示。

3-4數(shù)據(jù)類型的轉(zhuǎn)換1.

類型強(qiáng)制轉(zhuǎn)換

強(qiáng)制類型轉(zhuǎn)換允許Web開發(fā)人員手動(dòng)將變量轉(zhuǎn)換成為指定的數(shù)據(jù)類型。

PHP提供了以下3種強(qiáng)制類型轉(zhuǎn)換的方法,其中方法1和方法2不會(huì)修改原數(shù)據(jù)的數(shù)據(jù)類型和值,方法3會(huì)修改原數(shù)據(jù)的數(shù)據(jù)類型。

第1種方法:將目標(biāo)數(shù)據(jù)類型使用括號(hào)括起來(lái)。

第2種方法:使用類型轉(zhuǎn)換函數(shù)intval()、floatval()、strval()。

第3種方法:使用通用類型轉(zhuǎn)換函數(shù)settype()。

3-4數(shù)據(jù)類型的轉(zhuǎn)換2.

類型自動(dòng)轉(zhuǎn)換

類型自動(dòng)轉(zhuǎn)換基本規(guī)則羅列如下。(1)使用echo或者print打印數(shù)據(jù)時(shí),數(shù)據(jù)自動(dòng)轉(zhuǎn)換為字符串。(2)浮點(diǎn)數(shù)與整數(shù)進(jìn)行算術(shù)運(yùn)算時(shí),為了確保精度不減,將整數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)后,再進(jìn)行算術(shù)運(yùn)算。(3)參與算術(shù)運(yùn)算的兩個(gè)操作數(shù),自動(dòng)轉(zhuǎn)換為浮點(diǎn)數(shù)或整數(shù)。(4)參與邏輯運(yùn)算的兩個(gè)操作數(shù),自動(dòng)轉(zhuǎn)換為布爾值。(5)參與字符串連接運(yùn)算的兩個(gè)操作數(shù),自動(dòng)轉(zhuǎn)換為字符串。

實(shí)踐任務(wù)上機(jī)實(shí)踐PHP表達(dá)式PHP編程基礎(chǔ)與實(shí)例教程第三版

PHPFundamentals&Practices3ndEdition第4章PHP控制語(yǔ)句

本章大綱4-1GET請(qǐng)求和預(yù)定義變量$_GET4-2條件控制語(yǔ)句4-3循環(huán)語(yǔ)句4-4其他控制語(yǔ)句4-5錯(cuò)誤和異常4-1GET請(qǐng)求和預(yù)定義變量$_GETGET譯作“獲取、獲得”,瀏覽器向Web服務(wù)器發(fā)送GET請(qǐng)求的主要目的是從Web服務(wù)器獲取網(wǎng)頁(yè)數(shù)據(jù)。瀏覽器向Web服務(wù)器發(fā)送GET請(qǐng)求的方法主要有3種。4-1GET請(qǐng)求和預(yù)定義變量$_GET①當(dāng)我們打開瀏覽器,在瀏覽器地址欄輸入U(xiǎn)RL網(wǎng)址并按Enter鍵后,瀏覽器向Web服務(wù)器發(fā)送的是GET請(qǐng)求。②當(dāng)我們點(diǎn)擊網(wǎng)頁(yè)的超鏈接時(shí),瀏覽器向Web服務(wù)器發(fā)送的是GET請(qǐng)求。③當(dāng)我們點(diǎn)擊FORM表單的提交按鈕時(shí),也可以向Web服務(wù)器發(fā)送GET請(qǐng)求(FORM表單的method屬性值是GET時(shí))。4-1GET請(qǐng)求和預(yù)定義變量$_GET1.

認(rèn)識(shí)GET請(qǐng)求在瀏覽器地址欄輸入U(xiǎn)RL網(wǎng)址并按Enter鍵,瀏覽器向目的資源文件發(fā)送GET請(qǐng)求。例如在瀏覽器地址欄輸入U(xiǎn)RL網(wǎng)址/index.php,表示瀏覽器向百度服務(wù)器發(fā)送GET請(qǐng)求,百度服務(wù)器將PHP程序index.php的運(yùn)行結(jié)果返回給瀏覽器,這樣我們就看到了百度首頁(yè)。通過點(diǎn)擊超鏈接也可以讓瀏覽器向目的資源文件發(fā)送GET請(qǐng)求。4-1GET請(qǐng)求和預(yù)定義變量$_GET2.

認(rèn)識(shí)預(yù)定義變量$_GET當(dāng)瀏覽器向Web服務(wù)器的目的資源發(fā)送GET請(qǐng)求后,Web服務(wù)器將GET請(qǐng)求中查詢字符串的參數(shù)信息封裝到預(yù)定義變量$_GET中。目的資源可以利用預(yù)定義變量$_GET獲取GET請(qǐng)求中查詢字符串的參數(shù)信息。在瀏覽器地址欄直接輸入U(xiǎn)RL網(wǎng)址http://localhost/4/baidu1.php,baidu1.php程序?qū)伋鲋T如“Warning:Undefinedarraykey"tn"”的警告信息。4-2條件控制語(yǔ)句1.

if語(yǔ)句

4-2條件控制語(yǔ)句2.

if…else語(yǔ)句

4-2條件控制語(yǔ)句3.

elseif和elseif語(yǔ)句

4-2條件控制語(yǔ)句4.

switch語(yǔ)句

4-2條件控制語(yǔ)句4.

switch語(yǔ)句

4-2條件控制語(yǔ)句5.

match表達(dá)式

4-3循環(huán)語(yǔ)句1.

while循環(huán)語(yǔ)句

4-3循環(huán)語(yǔ)句2.

do…while循環(huán)語(yǔ)句

4-3循環(huán)語(yǔ)句3.

for循環(huán)語(yǔ)句

4-3循環(huán)語(yǔ)句4.

循環(huán)語(yǔ)句的應(yīng)用

4-4其他控制語(yǔ)句1.

continue語(yǔ)句

4-4其他控制語(yǔ)句2.

break語(yǔ)句break用于結(jié)束“當(dāng)前”switch、while、do…while、for、foreach語(yǔ)句的執(zhí)行。

4-4其他控制語(yǔ)句3.

強(qiáng)行終止程序的執(zhí)行我們很難保證程序運(yùn)行過程中不發(fā)生任何錯(cuò)誤,當(dāng)發(fā)生諸如被零除、打開一個(gè)不存在的文件或者數(shù)據(jù)庫(kù)連接失敗等錯(cuò)誤后,應(yīng)該強(qiáng)行終止程序的執(zhí)行,PHP提供的die語(yǔ)句可以實(shí)現(xiàn)該功能(die的別名是exit)。

4-5錯(cuò)誤和異常1.

警告、錯(cuò)誤和異常概述

警告:包含一個(gè)不存在的文件、數(shù)據(jù)庫(kù)連接失敗、打開一個(gè)不存在的文件、訪問一個(gè)未定義的變量名、使用數(shù)組中一個(gè)不存在的鍵等,PHP都會(huì)輸出警告信息。4-5錯(cuò)誤和異常1.

警告、錯(cuò)誤和異常概述

錯(cuò)誤:訪問一個(gè)不存在的常量、調(diào)用一個(gè)不存在的函數(shù)、調(diào)用函數(shù)時(shí)參數(shù)個(gè)數(shù)不正確、調(diào)用函數(shù)時(shí)參數(shù)的數(shù)據(jù)類型不正確、被零除、match表達(dá)式和所有值都沒有匹配,PHP都會(huì)拋出錯(cuò)誤。PHP5使用錯(cuò)誤報(bào)告機(jī)制處理錯(cuò)誤。4-5錯(cuò)誤和異常1.

警告、錯(cuò)誤和異常概述

異常:PHP7之前,錯(cuò)誤是不能通過try…catch…finally語(yǔ)句處理的。從PHP7開始,PHP改進(jìn)了錯(cuò)誤處理方式,錯(cuò)誤與異常都繼承了Throwable接口,try…catch…finally語(yǔ)句可以處理錯(cuò)誤,也可以處理自定義異常。4-5錯(cuò)誤和異常1.

警告、錯(cuò)誤和異常概述

說(shuō)明1:錯(cuò)誤和異常的關(guān)系。錯(cuò)誤屬于異常,異常包括錯(cuò)誤。錯(cuò)誤通常由PHP內(nèi)置,異??梢杂蒞eb開發(fā)人員自定義。本書附錄羅列了PHP常用的內(nèi)置錯(cuò)誤類和異常類。

說(shuō)明2:對(duì)于警告,警告發(fā)生后,程序繼續(xù)執(zhí)行。對(duì)于錯(cuò)誤或異常,需要使用try…catch…finally語(yǔ)句處理,否則程序會(huì)立即終止執(zhí)行。警告可以使用“@”抑制,本節(jié)不講解警告,只講解如何使用try…catch…finally處理錯(cuò)誤或異常。4-5錯(cuò)誤和異常2.

try…catch…finally完整語(yǔ)法格式

4-5錯(cuò)誤和異常2.

try…catch…finally完整語(yǔ)法格式(1)try語(yǔ)句:用于拋出異常。(2)catch語(yǔ)句:用于捕獲異常。捕獲的原則是:與try語(yǔ)句拋出的異常進(jìn)行類型匹配,如果類型匹配成功,則捕獲該異常。(3)finally語(yǔ)句(可選的):無(wú)論是否發(fā)生異常,finally語(yǔ)句的代碼塊永遠(yuǎn)會(huì)被執(zhí)行。4-5錯(cuò)誤和異常2.

try…catch…finally完整語(yǔ)法格式try…catch…finally的執(zhí)行流程如下。(1)如果try語(yǔ)句沒有拋出異常,則執(zhí)行finally語(yǔ)句。(2)如果try語(yǔ)句拋出異常,具體流程是①catch語(yǔ)句與try語(yǔ)句拋出的異常進(jìn)行類型匹配,如果類型匹配成功,則捕獲該異常;再執(zhí)行finally語(yǔ)句。②如果類型匹配不成功,則交由下一條catch語(yǔ)句進(jìn)行類型匹配;③如果類型匹配都不成功,先執(zhí)行finally語(yǔ)句,再由PHP按照處理異常的默認(rèn)行為自行處理該異常。4-5錯(cuò)誤和異常2.

try…catch…finally完整語(yǔ)法格式實(shí)踐任務(wù)上機(jī)實(shí)踐PHP控制語(yǔ)句PHP編程基礎(chǔ)與實(shí)例教程第三版

PHPFundamentals&Practices3ndEdition第5章PHP數(shù)組

本章大綱5-1數(shù)組的必要性5-2PHP數(shù)組的特點(diǎn)5-3數(shù)組的分類5-4創(chuàng)建數(shù)組5-5訪問、修改或刪除數(shù)組元素5-6二維數(shù)組5-7數(shù)組的解包5-8數(shù)組處理函數(shù)5-1數(shù)組的必要性

5-2PHP數(shù)組的特點(diǎn)PHP數(shù)組與傳統(tǒng)高級(jí)編程語(yǔ)言數(shù)組之間的不同之處列舉如下。(1)在傳統(tǒng)高級(jí)編程語(yǔ)言中,數(shù)組中元素的鍵必須是從零開始、依次遞增的整數(shù)。在PHP中,數(shù)組中元素的鍵可以是整數(shù)(可以不連續(xù))和字符串,甚至同一個(gè)數(shù)組中元素的鍵可以是整數(shù)和字符串并存。5-2PHP數(shù)組的特點(diǎn)(2)在傳統(tǒng)高級(jí)編程語(yǔ)言中,同一個(gè)數(shù)組中元素的值必須是同類型數(shù)據(jù)。在PHP中,同一個(gè)數(shù)組中元素的值可以是異構(gòu)類型數(shù)據(jù)。(3)在傳統(tǒng)高級(jí)編程語(yǔ)言中,數(shù)組是定長(zhǎng)的,在創(chuàng)建數(shù)組前必須指定數(shù)組的長(zhǎng)度。在PHP中,數(shù)組長(zhǎng)度是可變的,創(chuàng)建數(shù)組時(shí)不必指定數(shù)組的長(zhǎng)度。5-3數(shù)組的分類

如果數(shù)組中元素的值是另一個(gè)數(shù)組,那么這個(gè)數(shù)組是二維數(shù)組。根據(jù)數(shù)組中元素值的復(fù)雜程度,可將數(shù)組分為一維數(shù)組、二維數(shù)組甚至多維數(shù)組。5-4創(chuàng)建數(shù)組1.

變量名后跟“[]”變?yōu)閿?shù)組名

5-4創(chuàng)建數(shù)組1.

變量名后跟“[]”變?yōu)閿?shù)組名

5-4創(chuàng)建數(shù)組2.

使用array語(yǔ)句或“[]”語(yǔ)句創(chuàng)建數(shù)組

5-4創(chuàng)建數(shù)組2.

使用array語(yǔ)句或“[]”語(yǔ)句創(chuàng)建數(shù)組

5-4創(chuàng)建數(shù)組3.

使用array語(yǔ)句或“[]”語(yǔ)句創(chuàng)建數(shù)組(1)創(chuàng)建數(shù)組時(shí),數(shù)組中元素的鍵必須是整數(shù)或者字符串。①如果元素的鍵是true或false,則true或false將被強(qiáng)制轉(zhuǎn)換為整數(shù)1或0。②從PHP8.1開始,如果數(shù)組中元素的鍵是浮點(diǎn)數(shù),將浮點(diǎn)數(shù)自動(dòng)轉(zhuǎn)換為整數(shù)前(例如將浮點(diǎn)數(shù)2.6強(qiáng)制轉(zhuǎn)換為整數(shù)2),PHP將發(fā)出棄用通知“Deprecated:Implicitconversion”。5-4創(chuàng)建數(shù)組3.

使用array語(yǔ)句或“[]”語(yǔ)句創(chuàng)建數(shù)組(2)創(chuàng)建數(shù)組時(shí),如果數(shù)組中元素的鍵是一個(gè)字符串,且完全符合整數(shù)格式,數(shù)組中元素的鍵將被自動(dòng)轉(zhuǎn)換為整數(shù)(例如"99"將被自動(dòng)轉(zhuǎn)換為整數(shù)99)。PHP之所以這樣處理,是因?yàn)檎麛?shù)的運(yùn)算效率高于字符串的運(yùn)算效率。5-5訪問、修改或刪除數(shù)組元素5-5訪問、修改或刪除數(shù)組元素5-5訪問、修改或刪除數(shù)組元素5-5訪問、修改或刪除數(shù)組元素5-6二維數(shù)組5-7數(shù)組的解包5-8數(shù)組處理函數(shù)1.

快速創(chuàng)建數(shù)組的函數(shù)

1.range()函數(shù)語(yǔ)法格式:arrayrange(mixedstart,mixedend)函數(shù)功能:快速創(chuàng)建一個(gè)從start到end范圍的數(shù)字?jǐn)?shù)組或字符數(shù)組。函數(shù)說(shuō)明:如果start>end,序列將從start到end。2.explode()函數(shù)語(yǔ)法格式:arrayexplode(stringseparator,stringstr);函數(shù)功能:使用指定的字符串分隔符separator分割字符串str,將分割后的字符串放到數(shù)組中,并返回該數(shù)組。5-8數(shù)組處理函數(shù)1.

快速創(chuàng)建數(shù)組的函數(shù)

3.a(chǎn)rray_combine()函數(shù)語(yǔ)法格式:arrayarray_combine(arraykeys,arrayvalues)函數(shù)功能:創(chuàng)建一個(gè)新數(shù)組,用數(shù)組keys的值作為新數(shù)組的“鍵”,數(shù)組values的值作為新數(shù)組的“值”。4.a(chǎn)rray_fill()函數(shù)語(yǔ)法格式:arrayarray_fill(intstart_key,intlength,mixedvalue)函數(shù)功能:創(chuàng)建一個(gè)數(shù)組,并為該數(shù)組添加length個(gè)數(shù)組元素,數(shù)組元素的“鍵”從start_key處開始遞增,每個(gè)數(shù)組元素的值為value。說(shuō)明:length必須是一個(gè)大于零的數(shù)值,否則PHP會(huì)提示W(wǎng)arning警告信息。5-8數(shù)組處理函數(shù)1.

快速創(chuàng)建數(shù)組的函數(shù)

5.a(chǎn)rray_pad()函數(shù)語(yǔ)法格式arrayarray_pad(arrayarr,intpad_size,mixedpad_value)函數(shù)功能:array_pad()函數(shù)返回?cái)?shù)組arr的一個(gè)拷貝,并用pad_value將其填補(bǔ)到pad_size指定的長(zhǎng)度。如果pad_size為正,則數(shù)組被填補(bǔ)到右側(cè),如果為負(fù)則從左側(cè)開始填補(bǔ)。如果pad_size的絕對(duì)值小于或等于input數(shù)組的長(zhǎng)度則沒有任何填補(bǔ)。5-8數(shù)組處理函數(shù)2.

數(shù)組統(tǒng)計(jì)函數(shù)

1.count()函數(shù)語(yǔ)法格式:intcount(arrayarr[,intmode])函數(shù)功能:統(tǒng)計(jì)并計(jì)算數(shù)組arr中元素的個(gè)數(shù)。如果數(shù)組arr是多維數(shù)組,可將mode參數(shù)的值設(shè)為常量COUNT_RECURSIVE(或整數(shù)1),計(jì)算數(shù)組arr中所有元素的個(gè)數(shù);mode的默認(rèn)值是0。該函數(shù)的別名函數(shù)為sizeof()。2.max()函數(shù)語(yǔ)法格式:mixedmax(arrayarr[,array...])函數(shù)功能:統(tǒng)計(jì)并計(jì)算數(shù)組arr中元素的最大值。說(shuō)明:PHP會(huì)將非數(shù)值的字符串當(dāng)成0處理,但如果這個(gè)正是最大的數(shù)值則仍然會(huì)返回一個(gè)字符串。如果多個(gè)數(shù)組元素的值為0且是最大值,函數(shù)會(huì)返回其中數(shù)值的0,如果數(shù)組元素中沒有數(shù)值的0,則返回按字母表順序最大的字符串。5-8數(shù)組處理函數(shù)2.

數(shù)組統(tǒng)計(jì)函數(shù)

3.min()函數(shù)語(yǔ)法格式:mixedmin(arrayarr[,array...])函數(shù)功能:統(tǒng)計(jì)并計(jì)算數(shù)組arr中元素的最小值。說(shuō)明:PHP會(huì)將數(shù)組arr中的字符串當(dāng)成0處理,如果字符串正是數(shù)組arr中最小的數(shù)值,則仍然會(huì)返回一個(gè)字符串;min()函數(shù)返回一個(gè)字符串時(shí),該字符串為數(shù)組中順序靠前的字符串。4.a(chǎn)rray_sum()函數(shù)語(yǔ)法格式:numberarray_sum(arrayarr)函數(shù)功能:統(tǒng)計(jì)并計(jì)算數(shù)組arr中的所有元素值的和,array_sum()返回整數(shù)或浮點(diǎn)數(shù)。說(shuō)明:PHP會(huì)將數(shù)組arr中的非數(shù)值類型的元素值自動(dòng)類型轉(zhuǎn)換為整數(shù)或浮點(diǎn)數(shù)。

5-8數(shù)組處理函數(shù)2.

數(shù)組統(tǒng)計(jì)函數(shù)

5.a(chǎn)rray_product()函數(shù)語(yǔ)法格式:numberarray_product(arrayarr)函數(shù)功能:統(tǒng)計(jì)并計(jì)算數(shù)組arr中所有元素值的乘積,該函數(shù)返回整數(shù)或浮點(diǎn)數(shù)。說(shuō)明:PHP會(huì)將數(shù)組arr中的非數(shù)值類型的數(shù)據(jù)自動(dòng)類型轉(zhuǎn)換為整數(shù)或浮點(diǎn)數(shù)。6.a(chǎn)rray_count_values()函數(shù)語(yǔ)法格式:arrayarray_count_values(arrayarr)函數(shù)功能:統(tǒng)計(jì)并計(jì)算數(shù)組arr中所有元素的值出現(xiàn)的次數(shù)。

5-8數(shù)組處理函數(shù)3.

數(shù)組指針函數(shù)

5-8數(shù)組處理函數(shù)3.

數(shù)組指針函數(shù)

1.key()函數(shù)語(yǔ)法格式:mixedkey(array&arr)函數(shù)功能:返回?cái)?shù)組arr中“當(dāng)前指針”所指元素的“鍵”名。說(shuō)明:該函數(shù)并不移動(dòng)“當(dāng)前指針”,也不會(huì)修改數(shù)組arr的內(nèi)部結(jié)構(gòu)。2.current()函數(shù)語(yǔ)法格式:mixedcurrent(array&arr)函數(shù)功能:返回?cái)?shù)組arr中“當(dāng)前指針”所指元素的“值”。說(shuō)明:current()函數(shù)有個(gè)別名pos。該函數(shù)并不移動(dòng)“當(dāng)前指針”,也不會(huì)修改數(shù)組arr的內(nèi)部結(jié)構(gòu)。5-8數(shù)組處理函數(shù)3.

數(shù)組指針函數(shù)

3.next()函數(shù)語(yǔ)法格式:mixednext(array&arr)函數(shù)功能:移動(dòng)數(shù)組arr“當(dāng)前指針”(current),使“當(dāng)前指針”(current)指向數(shù)組arr的下一個(gè)元素;然后返回“當(dāng)前指針”(current)所指的元素“值”。說(shuō)明:當(dāng)“當(dāng)前指針”(current)指向數(shù)組的最后一個(gè)元素時(shí),使用next()函數(shù)移動(dòng)“當(dāng)前指針”(current)后,“當(dāng)前指針”(current)為“空”,并且“當(dāng)前指針”(current)指向的元素“值”為FALSE。5-8數(shù)組處理函數(shù)3.

數(shù)組指針函數(shù)

4.end()函數(shù)語(yǔ)法格式:mixedend(array&arr)函數(shù)功能:移動(dòng)數(shù)組arr“當(dāng)前指針”(current),使“當(dāng)前指針”(current)指向數(shù)組arr最后一個(gè)元素;然后返回“當(dāng)前指針”(current)所指的元素“值”。5-8數(shù)組處理函數(shù)3.

數(shù)組指針函數(shù)

5.prev()函數(shù)語(yǔ)法格式:mixedprev(array&arr)函數(shù)功能:移動(dòng)數(shù)組arr“當(dāng)前指針”(current),使“當(dāng)前指針”(current)指向數(shù)組arr上一個(gè)元素;然后返回“當(dāng)前指針”(current)所指的元素“值”。說(shuō)明:當(dāng)“當(dāng)前指針”(current)為“空”時(shí),使用prev()函數(shù)移動(dòng)“當(dāng)前指針”(current)后,“當(dāng)前指針”(current)還為“空”,并且“當(dāng)前指針”(current)指向的元素“值”為FALSE。5-8數(shù)組處理函數(shù)3.

數(shù)組指針函數(shù)6.reset()函數(shù)語(yǔ)法格式:mixedreset(array&arr)函數(shù)功能:移動(dòng)數(shù)組arr“當(dāng)前指針”(current),使“當(dāng)前指針”(current)指向數(shù)組arr的第一個(gè)元素;然后返回“當(dāng)前指針”(current)所指的元素“值”。5-8數(shù)組處理函數(shù)4.

list語(yǔ)句語(yǔ)法格式:list($key1=>$value1,$key2=>$value2,):arraylist語(yǔ)句功能:給數(shù)組解包。5-8數(shù)組處理函數(shù)4.

list語(yǔ)句5-8數(shù)組處理函數(shù)5.

使用循環(huán)語(yǔ)句遍歷數(shù)組5-8數(shù)組處理函數(shù)5.

使用循環(huán)語(yǔ)句遍歷數(shù)組5-8數(shù)組處理函數(shù)6.

foreach語(yǔ)句foreach語(yǔ)句有以下兩種用法。1.foreach($arrayas$value)使用該方法遍歷給定的數(shù)組$array,每次遍歷時(shí),當(dāng)前指針?biāo)冈氐闹蒂x給變量$value,然后向后移動(dòng)當(dāng)前指針,周而復(fù)始,直至數(shù)組$array中的最后一個(gè)元素。2.foreach($arrayas$key=>$value)使用該方法遍歷給定的數(shù)組array,每次遍歷時(shí),當(dāng)前指針?biāo)冈氐逆I賦給變量$key,元素的值賦給變量$value,然后向后移動(dòng)當(dāng)前指針,周而復(fù)始,直至數(shù)組$array中的最后一個(gè)元素。5-8數(shù)組處理函數(shù)6.

foreach語(yǔ)句5-8數(shù)組處理函數(shù)6.

foreach語(yǔ)句5-8數(shù)組處理函數(shù)6.

foreach語(yǔ)句5-8數(shù)組處理函數(shù)6.

foreach語(yǔ)句5-8數(shù)組處理函數(shù)6.

foreach語(yǔ)句5-8數(shù)組處理函數(shù)7.數(shù)組檢索函數(shù)1.a(chǎn)rray_keys()函數(shù)語(yǔ)法格式:arrayarray_keys(arrayarr[,mixedsearchValue])函數(shù)功能:array_keys()函數(shù)以數(shù)組的形式返回arr數(shù)組中的“鍵名”。如果指定了可選參數(shù)searchValue,則只返回searchValue值的鍵名;否則arr數(shù)組中的所有鍵名都會(huì)被返回。說(shuō)明:如果searchValue是字符串,則比較以區(qū)分大小寫的方式進(jìn)行。2.a(chǎn)rray_values()函數(shù)語(yǔ)法格式:arrayarray_values(arrayarr)函數(shù)功能:array_values()函數(shù)以數(shù)組的形式返回arr數(shù)組中所有的元素值(過濾掉重復(fù)的元素值),并為該數(shù)組建立連續(xù)的整數(shù)“鍵”。5-8數(shù)組處理函數(shù)7.數(shù)組檢索函數(shù)3.in_array()函數(shù)語(yǔ)法格式:boolin_array(mixedsearchValue,arrayarr[,boolstrict])函數(shù)功能:檢查數(shù)組arr中是否存在值searchValue,如果存在則返回TRUE,否則返回FALSE。如果第三個(gè)參數(shù)strict的值為TRUE,則in_array()函數(shù)還會(huì)檢查數(shù)據(jù)類型是否相同。strict的默認(rèn)值為FALSE。說(shuō)明:如果searchValue是字符串,則比較時(shí)區(qū)分大小寫。5-8數(shù)組處理函數(shù)7.數(shù)組檢索函數(shù)4.a(chǎn)rray_key_exists()函數(shù)語(yǔ)法格式:boolarray_key_exists(mixedkeyName,arrayarr)函數(shù)功能:檢查數(shù)組arr中是否存在鍵名keyName,如果存在則返回TRUE,否則返回FALSE。

5-8數(shù)組處理函數(shù)7.數(shù)組檢索函數(shù)5.a(chǎn)rray_search()函數(shù)語(yǔ)法格式:mixedarray_search(mixedsearchValue,arrayarr[,boolstrict])函數(shù)功能:在數(shù)組arr中搜索給定的值searchValue,如果找到則返回對(duì)應(yīng)的鍵名,否則返回FALSE。如果第三個(gè)參數(shù)strict的值為TRUE,則array_search()函數(shù)還會(huì)檢查數(shù)據(jù)類型是否相同。strict的默認(rèn)值為FALSE。說(shuō)明:如果searchValue是字符串,則比較時(shí)區(qū)分大小寫;如果searchValue在arr中出現(xiàn)不止一次,則返回第一個(gè)匹配的鍵;要返回所有匹配值的鍵,應(yīng)該用array_keys()函數(shù)。5-8數(shù)組處理函數(shù)7.數(shù)組檢索函數(shù)6.a(chǎn)rray_unique()函數(shù)語(yǔ)法格式:arrayarray_unique(arrayarray)函數(shù)功能:array_unique()函數(shù)返回一個(gè)移除數(shù)組arr中重復(fù)的元素“值”的新數(shù)組。說(shuō)明:array_unique()函數(shù)保持了原有的“鍵值對(duì)”對(duì)應(yīng)關(guān)系,對(duì)每個(gè)值只保留第一個(gè)遇到的鍵名。5-8數(shù)組處理函數(shù)8.數(shù)組排序函數(shù)

1.sort函數(shù)和rsort函數(shù)語(yǔ)法格式:sort(array&$array):bool函數(shù)功能:按元素值的升序?qū)?shù)組$array進(jìn)行排序(丟棄原有的鍵),函數(shù)的返回值是true。說(shuō)明:rsort函數(shù)與sort函數(shù)語(yǔ)法格式相同,不同的是rsort函數(shù)按元素值的降序?qū)?shù)組$array進(jìn)行排序。

5-8數(shù)組處理函數(shù)8.數(shù)組排序函數(shù)

2.a(chǎn)sort函數(shù)和arsort函數(shù)語(yǔ)法格式:asort(array&$array):bool函數(shù)功能:按元素值的升序?qū)?shù)組$array進(jìn)行排序(保留原有的“鍵值對(duì)”對(duì)應(yīng)關(guān)系不變),函數(shù)的返回值是true。說(shuō)明:arsort函數(shù)與arsort函數(shù)語(yǔ)法格式相同,不同的是arsort函數(shù)按元素值的降序?qū)?shù)組$array進(jìn)行排序。5-8數(shù)組處理函數(shù)8.數(shù)組排序函數(shù)

3.natsort函數(shù)和natcasesort函數(shù)語(yǔ)法格式:natsort(array&$array):bool函數(shù)功能:用自然排序算法按元素值的升序?qū)?shù)組$array進(jìn)行排序(保留原有的“鍵值對(duì)”對(duì)應(yīng)關(guān)系不變),函數(shù)的返回值是true。說(shuō)明:natcasesort函數(shù)與natsort函數(shù)語(yǔ)法格式相同,不同的是natcasesort函數(shù)忽略字母大小寫。5-8數(shù)組處理函數(shù)8.數(shù)組排序函數(shù)

4.ksort函數(shù)和krsort函數(shù)語(yǔ)法格式:ksort(array&$array):bool函數(shù)功能:按元素鍵的升序?qū)?shù)組$array進(jìn)行排序(保留原有的“鍵值對(duì)”對(duì)應(yīng)關(guān)系不變),函數(shù)的返回值是true。說(shuō)明:krsort函數(shù)與ksort函數(shù)語(yǔ)法格式相同,不同的是krsort函數(shù)按元素鍵的降序?qū)?shù)組$array進(jìn)行排序。

5-8數(shù)組處理函數(shù)8.數(shù)組排序函數(shù)

5.shuffle函數(shù)語(yǔ)法格式:shuffle(array&$array):bool函數(shù)功能:shuffle函數(shù)為數(shù)組$array亂序排序(丟棄原有的鍵),如果成功,函數(shù)返回true,否則返回false。

實(shí)踐任務(wù)上機(jī)實(shí)踐PHP數(shù)組PHP編程基礎(chǔ)與實(shí)例教程第三版

PHPFundamentals&Practices3ndEdition第6章PHP處理FORM表單

本章大綱6-1認(rèn)識(shí)GET請(qǐng)求、FORM表單和POST請(qǐng)求6-2FORM表單6-3文件上傳功能的實(shí)現(xiàn)6-4URL路徑6-5其他常用的預(yù)定義變量6-1認(rèn)識(shí)GET請(qǐng)求、FORM表單和POST請(qǐng)求GET譯作“獲取、獲得”,瀏覽器向Web服務(wù)器發(fā)送GET請(qǐng)求的主要目的是從Web服務(wù)器獲取網(wǎng)頁(yè)數(shù)據(jù)。有時(shí)我們需要向Web服務(wù)器提交數(shù)據(jù),此時(shí)我們需要借助FORM表單向Web服務(wù)器發(fā)送POST請(qǐng)求。POST譯作“郵寄、投遞”,F(xiàn)ORM表單就像是一份快遞單。6-1認(rèn)識(shí)GET請(qǐng)求、FORM表單和POST請(qǐng)求想象一下我們郵寄包裹的場(chǎng)景:我們從快遞員處申領(lǐng)一份快遞單,填寫收件人和發(fā)件人后,就可以將包裹“投遞”給快遞公司的快遞員了。同樣的道理,我們運(yùn)行Web服務(wù)器的某個(gè)FORM表單程序,從Web服務(wù)器申領(lǐng)一張F(tuán)ORM表單,填寫FORM表單,點(diǎn)擊提交按鈕后,F(xiàn)ORM表單上填寫的數(shù)據(jù)就被“投遞”給Web服務(wù)器的PHP程序了。6-1認(rèn)識(shí)GET請(qǐng)求、FORM表單和POST請(qǐng)求總之,瀏覽器向Web服務(wù)器發(fā)送POST請(qǐng)求的主要目的就是將FORM表單上填寫的數(shù)據(jù)提交給Web服務(wù)器的PHP程序,PHP程序就可以通過預(yù)定義變量$_POST獲取POST請(qǐng)求中的參數(shù)信息。FORM表單由表單標(biāo)簽、表單控件和表單按鈕3個(gè)部分組成,通常情況下,表單控件和表單按鈕必須放在表單標(biāo)簽中才有意義。6-2FORM表單6-2FORM表單1.

表單標(biāo)簽外觀上,表單標(biāo)簽類似于表格的虛框,雖無(wú)法顯示,但它是表單控件和表單按鈕的容器,定義了表單的邊界。功能上,表單標(biāo)簽設(shè)置了表單數(shù)據(jù)的提交方式、表單數(shù)據(jù)的處理程序。表單標(biāo)簽像編劇,雖然默默存在卻能決定劇情。表單標(biāo)簽的語(yǔ)法格式如下。<formaction="處理程序"method="post"name=""enctype="">這里是表單控件的代碼和表單按鈕的代碼。</form>6-2FORM表單2.

表單控件外觀上,表單控件在瀏覽器上可見。功能上,它允許瀏覽器用戶填寫數(shù)據(jù)或者選擇數(shù)據(jù)。表單控件像演員,總是能夠在瀏覽器用戶面前華麗現(xiàn)身。表單控件包括單行文本框、單選框、多行文本框和下拉列表等。6-2FORM表單2.

表單控件

(1)單行文本框

(2)密碼框6-2FORM表單2.

表單控件

(3)復(fù)選框6-2FORM表單2.

表單控件

(4)單選框

(5)單選框6-2FORM表單2.

表單控件

(6)下拉選擇框6-2FORM表單2.

表單控件

(7)單選框

6-2FORM表單2.

表單控件

(8)文件上傳框

6-2FORM表單3.

表單控件的其他常用屬性

(1)required屬性:告訴瀏覽器該表單控件必須填寫,如果留空,提交表單時(shí)將阻止提交,并顯示警告信息,該屬性無(wú)須設(shè)置值。

(2)placeholder屬性:當(dāng)表單控件留空時(shí),設(shè)置需要顯示的提示信息。

(3)disabled屬性:禁用該表單控件,該屬性無(wú)須設(shè)置值。

6-2FORM表單4.

其他表單控件

(1)郵箱輸入框

6-2FORM表單4.

其他表單控件

(2)數(shù)字輸入框

6-2FORM表單4.

其他表單控件

(3)表單控件分組

6-2FORM表單5.

表單按鈕

(1)提交按鈕

(2)重置按鈕

6-2FORM表單6.

補(bǔ)充知識(shí)

1.GET提交方式和POST提交方式的特點(diǎn)(1)POST提交方式比GET提交方式安全。(2)POST提交方式可以提交更多的數(shù)據(jù)。(3)GET提交方式不能用于文件上傳。POST提交方式支持文件上傳。(4)GET提交方式提交的數(shù)據(jù)需要通過預(yù)定義變量$_GET獲取,POST提交方式提交的數(shù)據(jù)需要通過預(yù)定義變量$_POST獲取。

6-2FORM表單6.

補(bǔ)充知識(shí)

2.將表單控件定義為數(shù)組

6-2FORM表單6.

補(bǔ)充知識(shí)

2.將表單控件定義為數(shù)組

6-3文件上傳功能的實(shí)現(xiàn)1.

文件上傳的相關(guān)配置

1.file_uploads。配置是否允許通過HTTP協(xié)議上傳文件。默認(rèn)值為On,表示W(wǎng)eb服務(wù)器支持通過HTTP協(xié)議上傳文件。典型配置示例:file_uploads=On

2.post_max_size。配置Web服務(wù)器能夠接收的表單數(shù)據(jù)上限,默認(rèn)值是8M,表示表單中所有提交數(shù)據(jù)(例如單行文本框+多行文本框+上傳文件)大小之和必須小于8M字節(jié),否則$_GET、$_POST和$_FILES將為空數(shù)組,PHP程序?qū)⒉荒懿杉饺魏蔚谋韱螖?shù)據(jù)。典型配置示例:post_max_size=8M

6-3文件上傳功能的實(shí)現(xiàn)1.

文件上傳的相關(guān)配置

3.upload_max_filesize。配置文件上傳框允許上傳文件的最大值,默認(rèn)值為2M。如果表單有多個(gè)文件上傳框,超過限制的文件上傳框?qū)⑸蟼魇。怀^限制的文件上傳框?qū)⑸蟼鞒晒?,文件上傳框之間互不影響上傳結(jié)果。典型配置示例:upload_max_filesize=2M

4.upload_tmp_dir。上傳文件的過程中會(huì)產(chǎn)生臨時(shí)文件,該參數(shù)配置了臨時(shí)文件的目錄。典型配置示例:upload_tmp_dir="d:/wamp/tmp"

6-3文件上傳功能的實(shí)現(xiàn)1.

文件上傳的相關(guān)配置

如果要上傳“大”文件或者網(wǎng)速較慢,只進(jìn)行上述配置未必行得通,此時(shí)還需進(jìn)行下列配置。

1.max_input_time。配置單個(gè)PHP程序解析提交數(shù)據(jù)的最大允許時(shí)間,單位是秒,默認(rèn)值為60。當(dāng)設(shè)置為?1時(shí),表示不限制。典型配置示例:max_input_time=60

2.memory_limit。配置單個(gè)PHP程序在Web服務(wù)器運(yùn)行時(shí),可以占用Web服務(wù)器的最大內(nèi)存數(shù),默認(rèn)值為128M。當(dāng)設(shè)置為?1時(shí),表示不限制。典型配置示例:memory_limit=128M

6-3文件上傳功能的實(shí)現(xiàn)1.

文件上傳的相關(guān)配置

如果要上傳“大”文件或者網(wǎng)速較慢,只進(jìn)行上述配置未必行得通,此時(shí)還需進(jìn)行下列配置。

3.max_execution_time。配置單個(gè)PHP程序在Web服務(wù)器運(yùn)行時(shí),可以占用Web服務(wù)器的最長(zhǎng)時(shí)間,單位是秒,默認(rèn)值為30。配置該參數(shù)可以有效避免死循環(huán)或大文件上傳等程序長(zhǎng)期占用Web服務(wù)器CPU導(dǎo)致Web服務(wù)器崩潰。如果設(shè)置值為0,表示不限制運(yùn)行時(shí)間。典型配置示例:max_execution_time=30。

說(shuō)明:在PHP程序中使用set_time_limit函數(shù)也可以設(shè)置該參數(shù),例如set_time_limit(30)。

6-3文件上傳功能的實(shí)現(xiàn)2.

PHP文件上傳流程

6-3文件上傳功能的實(shí)現(xiàn)3.

預(yù)定義變量$_FILES

例如使用如下代碼可以獲取用戶注冊(cè)表單中“個(gè)人相片”的上傳文件信息。$_FILES['picture']['name']:上傳文件的文件名。$_FILES['picture']['type']:上傳文件的MIME類型。$_FILES['picture']['size']:上傳文件的大小,單位為字節(jié)。$_FILES['picture']['tmp_name']:上傳文件過程中產(chǎn)生的臨時(shí)文件名。$_FILES['picture']['error']:上傳文件的狀態(tài)代碼。$_FILES['picture']['full_path']:自PHP8.1.0起可用,記錄了上傳文件在瀏覽器端的完整路徑。

6-3文件上傳功能的實(shí)現(xiàn)3.

預(yù)定義變量$_FILES

上傳文件的狀態(tài)代碼的取值及對(duì)應(yīng)的意義如下。

0:文件上傳成功。

1:上傳文件的大小超過了upload_max_filesize參數(shù)設(shè)置的上限值。

2:上傳文件的大小超過了隱藏域MAX_FILE_SIZE設(shè)置的上限值。

3:文件只有部分被上傳。

4:表單沒有選擇上傳文件。

6:缺少一個(gè)臨時(shí)文件夾。

7:無(wú)法將文件寫入磁盤。

6-3文件上傳功能的實(shí)現(xiàn)4.

PHP文件上傳的實(shí)現(xiàn)

1.is_uploaded_file函數(shù)語(yǔ)法格式:boolis_uploaded_file(stringfileName)函數(shù)功能:判斷文件名為fileName的文件是否是文件上傳過程中產(chǎn)生的臨時(shí)文件。例如is_uploaded_file($_FILES['picture']['tmp_name'])的返回值為true。

6-3文件上傳功能的實(shí)現(xiàn)4.

PHP文件上傳的實(shí)現(xiàn)

2.move_uploaded_file函數(shù)語(yǔ)法格式:boolmove_uploaded_file(stringfileName,stringdestination)函數(shù)功能:用于將文件上傳過程中產(chǎn)生的臨時(shí)文件fileName重命名為目標(biāo)文件destination。說(shuō)明1:如果fileName不是文件上傳過程中產(chǎn)生的臨時(shí)文件,該函數(shù)不進(jìn)行任何操作,并返回false。說(shuō)明2:如果目標(biāo)文件destination已經(jīng)存在,將會(huì)被覆蓋。

6-4URL路徑6-4URL路徑1.

URL絕對(duì)路徑

2.

URL相對(duì)路徑

URL相對(duì)路徑分為server-relative路徑與relative路徑。

server-relative路徑是以斜杠“/”開頭的URL相對(duì)路徑。例如“/6/post.php”。

relative路徑是不以斜杠“/”開頭的URL相對(duì)路徑。例如“post.php”6-4URL路徑3.

URL相對(duì)路徑其他概念

1.相同目錄下的資源訪問,它們直呼其名即可訪問對(duì)方程序。

2.“.”表示當(dāng)前目錄。

3.“../”表示當(dāng)前目錄的上一級(jí)目錄,“../../”表示當(dāng)前目錄的上上一級(jí)目錄,以此類推。6-5其他常用的預(yù)定義變量1.

$_REQUEST

$_REQUEST可以同時(shí)獲取GET請(qǐng)求數(shù)據(jù)、POST請(qǐng)求數(shù)據(jù)以及Cookie請(qǐng)求頭的數(shù)據(jù),即$_REQUEST=array_merge($_GET,$_POST,$_COOKIE)。實(shí)際編程中,很少使用$_REQUEST。6-5其他常用的預(yù)定義變量2.

$_SERVER$_SERVER用于獲取瀏覽器主機(jī)以及Web服務(wù)器主機(jī)的相關(guān)信息。$_SERVER["REMOTE_ADDR"]:用于獲取瀏覽器主機(jī)的IP地址。$_SERVER["SERVER_ADDR"]:用于獲取Web服務(wù)器主機(jī)的IP地址。$_SERVER["PHP_SELF"]:用于獲取當(dāng)前PHP程序的文件名。$_SERVER['QUERY_STRING']:用于獲取URL網(wǎng)址中的查詢字符串。$_SERVER['DOCUMENT_ROOT']:用于獲取Web服務(wù)器的主目錄。$_SERVER["REQUEST_URI"]:用于獲取除域名外的其余URL網(wǎng)址部分。$_SERVER["HTTP_USER_AGENT"]:用于獲取瀏覽器主機(jī)使用的操作系統(tǒng)、瀏覽器及其版本號(hào)信息。實(shí)踐任務(wù)上機(jī)實(shí)踐PHP處理FORM表單PHP編程基礎(chǔ)與實(shí)例教程第三版

PHPFundamentals&Practices3ndEdition第7章自定義函數(shù)

本章大綱7-1請(qǐng)求包含7-2自定義函數(shù)的語(yǔ)法格式7-3函數(shù)的調(diào)用7-4變量的作用域和生命周期7-5傳值賦值和傳引用賦值7-6global關(guān)鍵字7-7static關(guān)鍵字7-8變量函數(shù)7-9return和exit7-1請(qǐng)求包含

7-1請(qǐng)求包含請(qǐng)求包含的執(zhí)行流程是:首先退出當(dāng)前的PHP代碼模式,進(jìn)入HTML代碼模式;目的資源執(zhí)行完畢時(shí),恢復(fù)到當(dāng)前的PHP代碼模式。7-1請(qǐng)求包含注意:如果目的資源包含PHP代碼,那么這些PHP代碼應(yīng)該以“<?php”開始、以“?>”結(jié)束;如果目的資源第一行代碼是“<?php”,請(qǐng)確?!?lt;?php”的左邊不要出現(xiàn)任何空格字符。7-1請(qǐng)求包含1.

請(qǐng)求包含的語(yǔ)法格式

7-1請(qǐng)求包含2.

四種請(qǐng)求包含的區(qū)別

7-1請(qǐng)求包含2.

四種請(qǐng)求包含的區(qū)別

7-1請(qǐng)求包含3.

請(qǐng)求包含的返回值

7-2自定義函數(shù)的語(yǔ)法格式

自定義函數(shù)使用關(guān)鍵詞function定義,語(yǔ)法格式如下。functionfunction_name($param_1,$param_2,…$param_n=default_value){函數(shù)體return返回值;}7-3函數(shù)的調(diào)用

無(wú)論是自定義函數(shù)還是內(nèi)置函數(shù),調(diào)用函數(shù)的語(yǔ)法格式相同,如下所示。function_name(arg_1_value,arg_2_value,…arg_n_value)7-4變量的作用域和生命周期2.

使用array語(yǔ)句或“[]”語(yǔ)句創(chuàng)建數(shù)組

7-4變量的作用域和生命周期

定義變量時(shí)的位置,決定了該變量屬于全局命名空間還是局部命名空間。

(1)在函數(shù)內(nèi)定義的變量(包括函數(shù)的參數(shù))屬于局部命名空間,屬于局部命名空間的變量稱為局部變量,局部變量只能在函數(shù)內(nèi)部訪問。局部變量的生命周期非常短暫:函數(shù)被調(diào)用時(shí),局部命名空間被創(chuàng)建,局部變量被放入到局部命名空間中;函數(shù)執(zhí)行結(jié)束后,局部命名空間被刪除,局部命名空間中的局部變量也被刪除。7-4變量的作用域和生命周期

定義變量時(shí)的位置,決定了該變量屬于全局命名空間還是局部命名空間。

(2)在PHP程序內(nèi)、函數(shù)外定義的變量屬于全局命名空間,屬于全局命名空間的變量稱為全局變量,全局變量被存放在$GLOBALS數(shù)組中,全局變量可以被PHP程序的所有PHP語(yǔ)句訪問。全局變量的生命周期是:PHP程序運(yùn)行時(shí),全局命名空間被創(chuàng)建,全局變量被放入到全局命名空間中;PHP程序執(zhí)行結(jié)束時(shí),全局命名空間被刪除,全局命名空間中的全局變量也被刪除。

7-5傳值賦值和傳引用賦值1.

傳值賦值

7-5傳值賦值和傳引用賦值2.

傳引用賦值

7-5傳值賦值和傳引用賦值3.

傳值+傳引用賦值

7-6global關(guān)鍵字7-7static關(guān)鍵字7-7static關(guān)鍵字7-7static關(guān)鍵字7-8變量函數(shù)7-9return和exit7-9return和exit實(shí)踐任務(wù)上機(jī)實(shí)踐自定義函數(shù)PHP編程基礎(chǔ)與實(shí)例教程第三版

PHPFundamentals&Practices3ndEdition第8章PHP結(jié)構(gòu)化編程和PHP面向?qū)ο缶幊?/p>

本章大綱8-1數(shù)組的必要性8-2PHP數(shù)組的特點(diǎn)8-3數(shù)組的分類8-4創(chuàng)建數(shù)組8-5訪問、修改或刪除數(shù)組元素8-6二維數(shù)組8-7數(shù)組的解包8-8數(shù)組處理函數(shù)8-1結(jié)構(gòu)化編程結(jié)構(gòu)化編程的核心思想是自頂向下、分而治之、功能分解。結(jié)構(gòu)化編程認(rèn)為:計(jì)算機(jī)程序由一組功能組成,任何過于復(fù)雜且無(wú)法簡(jiǎn)單描述的功能都可以被分解成一組更小的功能,直到這些功能足夠小、足夠獨(dú)立、易于理解。結(jié)構(gòu)化編程將功能分解成若干個(gè)子功能,功能之間相互調(diào)用,簡(jiǎn)化問題的同時(shí)最終解決了問題。功能的英文單詞是function,對(duì)應(yīng)于結(jié)構(gòu)化編程中的“函數(shù)”。8-1結(jié)構(gòu)化編程

8-1結(jié)構(gòu)化編程

8-2面向?qū)ο缶幊堂嫦驅(qū)ο缶幊棠軌蛟诮Y(jié)構(gòu)化編程的基礎(chǔ)上進(jìn)一步避免代碼冗余、增強(qiáng)代碼的復(fù)用性,現(xiàn)在的編程語(yǔ)言(例如Java、Python等)都是面向?qū)ο缶幊陶Z(yǔ)言,PHP從PHP4開始,逐漸支持面向?qū)ο蟆?-2面向?qū)ο缶幊?/p>

8-3理解類和對(duì)象之間的關(guān)系類和對(duì)象之間的關(guān)系就像菜譜和菜之間的關(guān)系。菜譜羅列了食材和操作流程,但菜譜是類、不是對(duì)象,菜譜并不可以吃。廚師購(gòu)買了食材,本質(zhì)是廚師為菜譜中的食材賦值的過程;廚師按照操作流程可以做出無(wú)數(shù)佳肴,這些佳肴都是菜譜的對(duì)象。菜譜上羅列的食材是屬性,菜譜上定義的操作流程是方法。8-3理解類和對(duì)象之間的關(guān)系類是模板,是藍(lán)圖(blueprint),是數(shù)據(jù)類型,一個(gè)類可以創(chuàng)建無(wú)數(shù)個(gè)對(duì)象,對(duì)象必須有數(shù)據(jù)類型,類與對(duì)象的關(guān)系是抽象與具體的關(guān)系。8-4自定義類、創(chuàng)建對(duì)象和方法的調(diào)用1.

自定義類和創(chuàng)建類的對(duì)象以自定義三角形類Triangle為例,語(yǔ)法格式如下所示。classTriangle{}關(guān)鍵字class表示自定義類,關(guān)鍵字class后跟類名(此處是Triangle),然后是“{}”。8-4自定義類、創(chuàng)建對(duì)象和方法的調(diào)用1.

自定義類和創(chuàng)建類的對(duì)象

8-4自定義類、創(chuàng)建對(duì)象和方法的調(diào)用2.

定義構(gòu)造方法和創(chuàng)建類的對(duì)象PHP面向?qū)ο缶幊讨械臉?gòu)造方法是__construct,通過構(gòu)造方法可以為對(duì)象添加屬性。魔法方法__construct的語(yǔ)法格式如下所示。[public]__construct(mixed...$values=""):void{$this->property1=$value1;$this->property2=$value2;}8-4自定義類、創(chuàng)建對(duì)象和方法的調(diào)用2.

定義構(gòu)造方法和創(chuàng)建類的對(duì)象

8-4自定義類、創(chuàng)建對(duì)象和方法的調(diào)用2.

定義構(gòu)造方法和創(chuàng)建類的對(duì)象

8-4自定義類、創(chuàng)建對(duì)象和方法的調(diào)用3.

定義方法和調(diào)用方法

8-5靜態(tài)方法和靜態(tài)方法的調(diào)用8-5靜態(tài)方法和靜態(tài)方法的調(diào)用在關(guān)鍵字function前加上關(guān)鍵字static,就可以將該方法聲明為靜態(tài)方法。由于靜態(tài)方法的可調(diào)用時(shí)間是在創(chuàng)建對(duì)象前,因此,不能通過“$this”調(diào)用靜態(tài)方法(“$this”表示當(dāng)前對(duì)象)。在類的定義的內(nèi)部,可以通過關(guān)鍵字self調(diào)用靜態(tài)方法。由于“->”是對(duì)象操作符,而靜態(tài)方法不能通過對(duì)象調(diào)用,為了解決這個(gè)問題,PHP引入了雙冒號(hào)關(guān)鍵字“::”,用于調(diào)用靜態(tài)方法(或靜態(tài)屬性)。

8-6PHP結(jié)構(gòu)化編程和PHP面向?qū)ο缶幊?/p>

1.從問題域的角度結(jié)構(gòu)化編程是面向“功能”的問題解決方案,是一種“自頂向下”“分而治之”“功能分解”的問題解決方案,問題被分解成若干功能,功能之間可以相互調(diào)用。面向?qū)ο缶幊淌敲嫦颉皵?shù)據(jù)類型”的問題解決方案,問題被分解成若干個(gè)數(shù)據(jù)類型(也叫類),通過類創(chuàng)建對(duì)象,管理了對(duì)象就管理了現(xiàn)實(shí)世界的事物。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論