




已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PHP網(wǎng)頁設(shè)計制作_張國策,機械電子工程專業(yè)PHP網(wǎng)頁設(shè)計制作教程 張國策,機械電子工程專業(yè)江蘇省徐州市徐州工程學(xué)院第1章PHP概述學(xué)習(xí)要點:1.PHP 基礎(chǔ)知識2.PHP 的環(huán)境配置3.安裝三款主流程序4.PHP 開發(fā)工具的選擇5.一個簡單的示例一PHP基礎(chǔ)知識PHPPHP 是一種目前最流行的服務(wù)端Web 程序開發(fā)語言之一。PHP 主要的特點是語法簡單易于學(xué)習(xí)、功能強大、靈活易用。在融合了現(xiàn)代編程語言的一些最佳特性后,PHP、Apache和MySQL 的組合已成為Web 服務(wù)器的一種配置標(biāo)準(zhǔn)。學(xué)習(xí)PHP 的過程是十分輕松、快捷的。可以說PHP 已經(jīng)成為Web 腳本技術(shù)的先驅(qū),并且會繼續(xù)引領(lǐng)Web 技術(shù)的潮流。PHP,一個嵌套的縮寫名稱,是英文超級文本預(yù)處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種HTML 內(nèi)嵌式的語言,PHP 與微軟的ASP 頗有幾分相似,都是一種在服務(wù)器端執(zhí)行的嵌入HTML 文檔的腳本語言,語言的風(fēng)格有類似于C 語言,現(xiàn)在被很多的網(wǎng)站編程人員廣泛的運用。PHP 獨特的語法混合了C、Java、Perl 以及PHP 自創(chuàng)新的語法。它可以比CGI 或者Perl 更快速的執(zhí)行動態(tài)網(wǎng)頁。用PHP 做出的動態(tài)頁面與其他的編程語言相比,PHP 是將程序嵌入到HTML 文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML 標(biāo)記的CGI 要高許多;與同樣是嵌入HTML 文檔的腳本語言JavaScript 相比,PHP 在服務(wù)器端執(zhí)行,充分利用了服務(wù)器的性能;PHP 執(zhí)行引擎還會將用戶經(jīng)常訪問的PHP 程序駐留在內(nèi)存中,其他用戶再一次訪問這個程序時就不需要重新編譯程序了,只要直接執(zhí)行內(nèi)存中的代碼就可以了,這也是PHP 高效率的體現(xiàn)之一。PHP 具有非常強大的功能,所有的CGI或者JavaScript 的功能PHP 都能實現(xiàn),而且支持幾乎所有流行的數(shù)據(jù)庫以及操作系統(tǒng)。PHP 最初是1994 年Rasmus Lerdorf 創(chuàng)建的,剛剛開始只是一個簡單的用Perl 語言編寫的程序,用來統(tǒng)計他自己網(wǎng)站的訪問者。后來又用C 語言重新編寫,包括可以訪問數(shù)據(jù)庫。在1995 年以Personal Home Page Tools (PHP Tools) 開始對外發(fā)表第一個版本,Lerdorf 寫了一些介紹此程序的文檔,并且發(fā)布了PHP1.0。在這早期的版本中,提供了訪客留言本、訪客計數(shù)器等簡單的功能。以后越來越多的網(wǎng)站使用了PHP,并且強烈要求增加一些特性,比如循環(huán)語句和數(shù)組變量等等,在新的成員加入開發(fā)行列之后,在1995 年中,PHP2.0 發(fā)布了。第二版定名為PHP/FI(Form Interpreter)。PHP/FI 加入了對mSQL 的支持,從此建立了PHP 在動態(tài)網(wǎng)頁開發(fā)上的地位。到了1996 年底,有15000 個網(wǎng)站使用PHP/FI;時間到了1997 年中,使用PHP/FI 的網(wǎng)站數(shù)字超過五萬個。而在1997 年中,開始了第三版的開發(fā)計劃,開發(fā)小組加入了Zeev Suraski 及Andi Gutmans,而第三版就定名為PHP3。2000 年,PHP4.0 又問世了,其中增加了許多新的特性。PHP的特性1. 開放的源代碼:所有的PHP 源代碼事實上都可以得到。2. PHP 是免費的。3. PHP 的便捷性: PHP 十分便捷4. 基于服務(wù)器端:由于PHP 是運行在服務(wù)器端的腳本,可以運行在UNIX、LINUX、WINDOWS 下。5. 嵌入HTML:因為PHP 可以嵌入HTML 語言,所以學(xué)習(xí)起來并不困難。6. 簡單的語言:PHP 堅持腳本語言為主,與Java 和C+不同。7. 效率高:PHP 消耗相當(dāng)少的系統(tǒng)資源。8. 圖像處理:用PHP 動態(tài)創(chuàng)建圖像9. 面向?qū)ο螅涸趐hp4,php5 中,面向?qū)ο螅∣OP 技術(shù))方面都有了很大的改進(jìn),現(xiàn)在php 完全可以用來開發(fā)大型商業(yè)程序。PHP42000 年5 月22 日,在正式宣布開發(fā)新版本之后大約18 個月,發(fā)布了PHP 4.0。許多人都認(rèn)為PHP 4 的發(fā)布是這種語言在企業(yè)級開發(fā)環(huán)境下的正式亮相,這個觀點也由于PHP 的迅速普及得到了佐證。僅僅在發(fā)布后的幾個月內(nèi),Netcraft(/)估計就有超過360 萬個站安裝了PHP。PHP 4 添加了以下幾項對該語言的企業(yè)級改進(jìn):1.改進(jìn)了資源處理??蓴U展性是版本3.x 的主要缺點之一,這主要是因為設(shè)計者低估了這種語言,沒考慮到它會大量用于大規(guī)模應(yīng)用程序。最初并沒有打算用這種語言開發(fā)企業(yè)級網(wǎng)站,但后來確實有這樣的嘗試,這就使得開發(fā)人員開始重新考慮這種語言的機制。2.面向?qū)ο蟮闹С?。版? 在一定程度上加入了面向?qū)ο蟮墓δ?,盡管一般認(rèn)為實現(xiàn)得不怎么樣。不過,對于使用傳統(tǒng)面向?qū)ο蟪绦蛟O(shè)計( OOP)語言的用戶來說,這個新特性在吸引這些用戶方面起到了非常重要的作用。除了對象重載和運行時類信息,PHP 還支持標(biāo)準(zhǔn)類和對象開發(fā)方法。3.內(nèi)置的會話處理支持。版本3.x 通過第三方包P H PL IB()來支持HTTP 會話處理,在版本4 中HTTP 會話處理則是內(nèi)置的功能。這個特性使得開發(fā)人員可以相當(dāng)高效輕松地跟蹤用戶活動和偏好。4.加密。MCrypt()庫引入到默認(rèn)發(fā)行包中,為用戶提供了完全加密和散列加密,使用的加密算法包括Blowfish、MD5、SHA1 和三重DES 等。5.ISAP I支持。對ISAPI 的支持使用戶能夠?qū)HP 與微軟的IIS Web 服務(wù)器結(jié)合使用。6.內(nèi)置COM/DCO M 支持。對Windows 用戶來說,另一個好處是PHP 4 能夠訪問和實例化COM對象。這項功能擴展了與Windows 應(yīng)用程序的互操作性。7.內(nèi)置Jav a 支持。這也是PHP 在互操作性方面的一大進(jìn)步,版本4.0 支持PHP 應(yīng)用程序綁定Java 對象。8.與Per l兼容的正則表達(dá)式(PCRE)庫。Perl 語言一直在字符串解析領(lǐng)域雄霸天下,占據(jù)著統(tǒng)治地位。開發(fā)人員知道,如果想讓PHP 得到廣泛認(rèn)可,強大的正則表達(dá)式功能會起到重要作用。他們的做法只是集成Perl 的功能,而不是重新開發(fā),并將PCRE 庫的包集成在PHP 的默認(rèn)發(fā)行包中。除了這些特性外,版本4 還添加了幾百項功能,大大提升了這種語言的能力。本書中,我們將討論其中大部分功能。在PHP 語言的發(fā)展歷程上,PHP 4 代表著一次巨大的飛躍。這個新版本帶來的新功能、強大能力和可擴展性對開發(fā)新手和老手都產(chǎn)生了不小的震動。但PHP 開發(fā)團(tuán)隊并不滿足于長時間只擁有這一項成果,于是不久以后他們就開始著手開展另一個里程碑式的任務(wù),要推出一門領(lǐng)導(dǎo)Web腳本領(lǐng)域的語言:PHP 5。PHP5版本5 是PHP 語言發(fā)展歷程中的另一座分水嶺。雖然前面的主要版本已經(jīng)增加了許多庫,版本5 則在現(xiàn)有的功能上又進(jìn)行了許多改進(jìn),并且增加了成熟的編程語言架構(gòu)才有的一些特性。1.極大地提高了面向?qū)ο竽芰?。PHP 的面向?qū)ο蠹軜?gòu)得到了改進(jìn),這是版本5 最突出的特點。版本5 增加了很多功能,如顯式構(gòu)造函數(shù)和析構(gòu)函數(shù)、對象克隆、類抽象、變量作用域和接口等。另外,PHP 在對象管理方面也有重大改進(jìn)。第6 章和第7 章將詳細(xì)介紹這些內(nèi)容。2.try/catch異常處理。具有諷刺意味的是,在結(jié)構(gòu)化編程語言中,設(shè)計錯誤處理策略本身卻非常容易出錯,而且很難保持一致。為了解決這個問題,版本5 開始支持異常處理。在許多語言中,如C+、C#、Python 和Java 等,異常處理長期以來一直都是錯誤管理方面的中流砥柱,它為建立標(biāo)準(zhǔn)化的錯誤報告邏輯提供了一種絕佳的方法。3.改進(jìn)的XML和Web服務(wù)支持?,F(xiàn)在的XML 支持建立在libxml2 庫基礎(chǔ)上,還引入一個很新但非常有前途的擴展包來解析和處理XML,即SimpleXML。此外,PHP 5 還支持SOAP 擴展。第20 章將介紹這兩個新擴展,并介紹一些很棒的第三方Web 服務(wù)擴展。4.對SQLite的內(nèi)置支持。開發(fā)人員總是樂于提供更多選擇,他們?yōu)楣δ軓姶蟮芎啙嵉腟QLite 數(shù)據(jù)庫服務(wù)器(/)提供了支持。如果開發(fā)人員需要一些重量級數(shù)據(jù)庫產(chǎn)品中才有的特性,同時不希望帶來相應(yīng)的管理開銷,SQLite 就能為這些開發(fā)人員提供一個方便的解決方案。第22 章將介紹PHP 為這個強大的數(shù)據(jù)庫引擎提供的支持。PHP61.Unicode支持。增加了本地Unicode 支持,使得構(gòu)建和維護(hù)多語言應(yīng)用程序變得容易的多。2.安全改進(jìn)。已經(jīng)做了大量有關(guān)安全性的改進(jìn),基于這些改進(jìn),應(yīng)該能顯著遏制安全相關(guān)問題的泛濫,說實話,這些問題不能歸于語言,而應(yīng)歸咎于只會東拼西湊的沒有經(jīng)驗的程序員。3.新語言特性和構(gòu)造。增加了許多新的語法特征,其中最突出的就是64 位整數(shù)類型、經(jīng)過“改造”的用于多維數(shù)組的foreach 循環(huán)構(gòu)造。以及對標(biāo)簽的break 的支持。二環(huán)境配置1. Windows/Linux, Apache , php , mysql2. Linux 下安裝方式(Lamp 環(huán)境)原碼包安裝方式Rpm 包安裝方式Linux 下集成軟件包xmapp3. Windows 下安裝方式Appserv 官網(wǎng): /phpStudyWampXmapp這里采用Appserv來安裝略第2章基本語法學(xué)習(xí)要點:1.Zend Studio 兩個小問題2.在Web 頁面中嵌入PHP 代碼3.標(biāo)識符與變量、常量4.訪問表單變量一ZendStudio兩個小問題1.新建文檔的模板設(shè)置:Window - Preferences - PHP - Editor - Templates - New simple PHP file/這個可以修改每次新建文件的起始代碼2.自動提示代碼速度很慢:Window - Preferences - PHP - Editor - Content Assist -Auto Activation/將代碼自動提示的速度500 設(shè)置成50二在Web頁面中嵌入PHP代碼?phpecho 我的第一個PHP程序!;?這是一段PHP 服務(wù)器端腳本,經(jīng)過服務(wù)器解釋執(zhí)行后生成HTML 文件!其他幾種格式如下:簡短風(fēng)格:? echo My PHP!; ?Script 風(fēng)格:echo My PHP!; ASP 風(fēng)格:% echo My PHP! ; %/默認(rèn)情況下是被禁止的,需修改asp_tags 選項,在PHP.ini 里注釋:單行/ 多行/*/ shell #向瀏覽器中輸出:echo()、print()、printf()、sprintf()echo、print、printf 本身是函數(shù),即函數(shù)()。但這里的輸出函數(shù)可以省略括號,用空格+所需顯示的字符串或變量。echo 和print 功能幾乎相同,而echo 運行速度上比print 稍稍快一點。因為print 有返回值。/echo 不返回任何值(void),print 返回的是整型(integer)printf()和sprintf()是C 語言模式,例如:printf(我今天買了%d 套視頻光盤,5);/他們之間的不同點是,printf 返回的是整型(integer),而sprintf 返回的字符串(string)/printf 可以在瀏覽器直接輸出,而sprintf 需要echo 將它輸出三標(biāo)識符與變量標(biāo)識符是變量的名稱,關(guān)于標(biāo)識符,PHP 定義了一些簡單的規(guī)則:標(biāo)識符可以是任何長度,而且可以由任何字母、數(shù)字、下劃線組成。標(biāo)識符不能以數(shù)字開始。在PHP 中,標(biāo)識符是區(qū)分大小寫的。一個變量名稱可以與一個函數(shù)名稱相同。變量賦值:$sum=0;$total=1.22;$sum=$total;變量的數(shù)據(jù)類型PHP 支持如下所示的基本數(shù)據(jù)類型:Integer(整數(shù))、Float(浮點數(shù),也叫Double,雙精度)、String(字符串)、Boole an(布爾)、Array(數(shù)組)、Object(對象).類型強度PHP 是一種非常弱的類型語言。在大多數(shù)編程語言中,變量只能保存一種類型的數(shù)據(jù),而且這個類型必須在使用變量之前聲明。而在PHP 中,變量的類型是由賦值給變量的值確定的。類型轉(zhuǎn)換使用類型轉(zhuǎn)換,可以將一個變量或值轉(zhuǎn)換成另一種類型。$sum=0;$total=(float)$sum;檢測變量大部分的可變函數(shù)都是用來測試一個函數(shù)的類型的。PHP 中有兩個最常見的函數(shù),分別是gettype()和settype()。這兩個函數(shù)返回的string 類型,也就是變量的類型字符串。isset()和unset()用來判斷一個變量是否存在,返回的是布爾值true 或false。empty()用來判斷一個變量的值是否為空,如果為空則為true 否則為false。換句話說,、0、0、NULL、FALSE、array()、var $var; 以及沒有任何屬性的對象都將被認(rèn)為是空的PHP 還提供了一些特定類型的測試函數(shù)。每一個函數(shù)都使用一個變量座位其參數(shù),并且返回true 或false。is_array()、is_double()、is_float()、is_real()、is_long()、is_int()、is_integer()、is_string()、is_object()、is_resource()、is_null()、is_numeric()可以通過調(diào)用一個函數(shù)來實現(xiàn)轉(zhuǎn)換變量數(shù)據(jù)類型的目的。intval()、floatval()、strval();理解變量的作用域作用域是指在一個腳本中某個變量在哪些地方可以使用或可見。內(nèi)置超級全局變量可以在腳本的任何地方使用和可見。常量,一旦被聲明,將可以在全局可見。也就是說,他們可以在函數(shù)內(nèi)外使用。在一個腳本中聲明的全局變量在整個腳本中是可見的,但不是在函數(shù)內(nèi)部。函數(shù)內(nèi)部使用的變量聲明為全局變量時,其名稱要與全局變量名稱一致。在函數(shù)內(nèi)部創(chuàng)建并被聲明為靜態(tài)的變量無法在函數(shù)外部可見,但是可以在函數(shù)的多次多次執(zhí)行過程中保持改值在函數(shù)內(nèi)部創(chuàng)建的變量對函數(shù)來說是本地的,而當(dāng)函數(shù)終止時,該變量也就不存在了。超級全局變量:$GLOBALS 所有全局變量數(shù)組$_SERVER 服務(wù)器環(huán)境變量數(shù)組$_GET 通過GET 方法傳遞給該腳本的變量數(shù)組$_POST 通過POST 方法傳遞給該腳本的變量數(shù)組$_COOKIE cookie 變量數(shù)組$_FILES 與文件上載相關(guān)的變量數(shù)組$_ENV 環(huán)境變量數(shù)組$_REQUEST 所有用戶輸入的變量數(shù)組$_SESSION 會話變量數(shù)組常量常量一旦被定義之后,就不能再次更改。define(TOTAL,199);除了自定義常量外,PHP 還預(yù)定了許多常量。了解這些常量的簡單方法就是運行phpinfo()命令。變量和常量的另一個差異在于常量只可以保存布爾值、整數(shù)、浮點數(shù)或字符串?dāng)?shù)據(jù)。這些類型都是標(biāo)量數(shù)據(jù)。四訪問表單變量在PHP 腳本中,可以以PHP 變量的形式訪問每一個表單域,其中PHP 變量名稱必須與表單域的名稱一致。你可以很容易識別PHP 的變量名稱,因為他們都是以$符號開始的。(漏掉這個$符號是一個常見的編程錯誤。)根據(jù)PHP 版本和設(shè)置的不同,通過變量,可以有3 種方法來訪問表單數(shù)據(jù)。這些方法并沒有正式的名稱,因此我們給他們定義了3 個昵稱,分別是簡短風(fēng)格、中等風(fēng)格和冗長風(fēng)格。在任何情況下,一個頁面上提交給PHP 腳本的每一個表單域在PHP 腳本中都是可以使用的。$userName /簡短風(fēng)格$_POSTuserName /中等風(fēng)格$_GetQQName;$HTTP_POST_VARSuserName /冗長風(fēng)格$_簡短風(fēng)格:非常方便,但容易引起混淆,不推薦中等風(fēng)格:4.1.0 版后支持,推薦的冗長風(fēng)格:最詳細(xì),但它已經(jīng)過時,長遠(yuǎn)角度看,以后會被剔除字符串連接:使用點就可以連接.;第3章 操作符與控制結(jié)構(gòu)學(xué)習(xí)要點:1. 字符串插入2. 操作符3. 控制結(jié)構(gòu)1 字符串插入為了給開發(fā)人員處理字符串值提供最大的靈活性,PHP為字面插入和內(nèi)容插入提供了一種方法。雙引號提供了最大的靈活性,原因是變量和轉(zhuǎn)移序列都會得到相應(yīng)的解析。?php$userName = 吳祁;echo His name is $userName;echo ;/中文會出現(xiàn)一些問題echo 他的名字叫$userName,他19歲了,已經(jīng)長大成人了!; echo ;/可以采用字符串連接的方式解決echo 他的名字叫.$userName.,他19歲了,已經(jīng)長大成人了!/轉(zhuǎn)義字符可以得到解析echo 雖然他的QQ號有很多女生,n但一個都不屬于他;?部分常用的轉(zhuǎn)義字符轉(zhuǎn)義序列描述n換行符r回車t水平制表圖反斜杠$美元符雙引號單引號會按照聲明的原樣解釋,解析字符串時,變量和轉(zhuǎn)義序列都不會進(jìn)行解析。2 操作符操作符是用來對數(shù)組和變量進(jìn)行某種操作運算的符號。算術(shù)操作符操作符名稱示例+加$a+$b-減$a-$b*乘$a*$b/除$a/$b%取余$a%$b復(fù)合賦值操作符操作符使用方法等價于+=$a+=$b$a=$a+$b-=$a-=$b$a=$a-$b*=$a*=$b$a=$a*$b/=$a/=$b$a=$a/$b%=$a%=$b$a=$a%$b.=$a.=$b$a=$a.$b前置遞增遞減和后置遞增遞減運算符:$a=+$b;$a=$b+;$a=-$b;$a=$b-;比較運算符操作符名稱使用方法= =等于$a= =$b= = =恒等$a= = =$b!=不等$a!=$b!= =不恒等$a!= =$b不等$a$b小于$a大于$a$b=小于等于$a=大于等于$a=$b注:恒等表示只有兩邊操作數(shù)相等并且數(shù)據(jù)類型也相當(dāng)才返回true;例如:0= =0 這個返回為true ,因為操作數(shù)相等 0= = =0 這個返回為false,因為數(shù)據(jù)類型不同邏輯運算符操作符使用方法使用方法說明!非!$b如果$b是false,則返回true;否則相反&與$a&$b如果$a和$b都是true,則結(jié)果為true;否則為false|或$a|$b如果$a和$b中有一個為true或者都為true時,其結(jié)果為true;否則為falseand與$a and $b與&相同,但其優(yōu)先級較低or或$a or $b與|相同,但其優(yōu)先級較低操作符and和or比&和|的優(yōu)先級要低。三元操作符Condition ? value if true : value if false示例:($grade=50 ? Passed : Failed)錯誤抑制操作符:$a=(57/0);除數(shù)不能為0,會出錯,所以加上避免出現(xiàn)錯誤警告。數(shù)組操作符操作符使用方法使用方法說明+聯(lián)合!$b返回一個包含了$a和$b中所有元素的數(shù)組= =等價$a&$b如果$a和$b具有相同的元素,返回true= = =恒等$a|$b如果$a和$b具有相同的元素以及相同的順序,返回true!=非等價$a and $b如果$a和$b不是等價的,返回true非等價如果$a和$b不是等價的,返回true!= =非恒等$a or $b如果$a和$b不是恒等的,返回true操作符的優(yōu)先級和結(jié)合性:一般地說,操作符具有一組優(yōu)先級,也就是執(zhí)行他們的順序。操作符還具有結(jié)合性,也就是同一優(yōu)先級的操作符的執(zhí)行順序。這種順序通常有從左到右,從右到左或者不相關(guān)。下面給出操作符優(yōu)先級的表。最上面的操作符優(yōu)先級最低,按著表的由上而下的順序,優(yōu)先級遞增。操作符優(yōu)先級結(jié)合性操作符左,左Or左Xor左And右Print左= += -= *= /= .= %= &= |= = = =左?:左|左&左|左左&不相關(guān)= = != = = = = != =不相關(guān)=左左+ - .左* / %右! + - (int)(double)(string)(array)(object) 右不相關(guān)New不相關(guān)()為了避免優(yōu)先級混亂,可以使用括號避開優(yōu)先級。3 控制結(jié)構(gòu)如果我們希望有效地相應(yīng)用戶的輸入,代碼就需要具有判斷能力。能夠讓程序進(jìn)行判斷的結(jié)構(gòu)稱為條件。if條件判斷語句if (條件判斷)/.if (條件判斷)/.else /.if (條件判斷) /.elseif /.elseif /.else /.switch語句switch (變量) case 值1:/.break;case 值2:/.break;case 值N:/.break;default:/.break;while循環(huán)while (條件) /.for循環(huán)for (初始值;條件;計數(shù)器) /.除了for循環(huán)外,PHP還提供了foreach循環(huán),它專門用于數(shù)組的使用。我們在數(shù)組中詳細(xì)介紹它。do while 循環(huán)do /. while(條件);如果希望停止一段代碼的執(zhí)行,根據(jù)所需要達(dá)到的效果不同,可以有3中方法實現(xiàn)。第一種:break; 退出循環(huán); 第二種是exit ;退出程序 第三種是continue;退出當(dāng)前循環(huán)if (條件) break; /continue第4章 數(shù)學(xué)運算學(xué)習(xí)要點:1. 數(shù)值數(shù)據(jù)類型2. 隨機數(shù)3. 格式化數(shù)據(jù)4. 數(shù)學(xué)函數(shù)在大多數(shù)程序設(shè)計語言中,數(shù)值運算都是最基本的元素之一。數(shù)值運算允許程序員完成加法到高級計算等各種操作。盡管PHP只是設(shè)計為用于創(chuàng)建動態(tài)HTML文檔,但如今它已經(jīng)發(fā)展成為一門通用的編程語言,包括了一個強大而靈活的數(shù)學(xué)實現(xiàn)。一數(shù)值數(shù)據(jù)類型PHP中,數(shù)字或數(shù)值數(shù)據(jù)以及數(shù)學(xué)函數(shù)的使用很簡單?;緛碚f,要處理兩種數(shù)據(jù)類型:浮點數(shù)和整數(shù)。浮點數(shù)和整數(shù)值的內(nèi)部表示分別是C數(shù)據(jù)類型double和int。類似于C,PHP中這些數(shù)據(jù)類型遵循同樣的一組規(guī)則。PHP是一種松散類型的腳本語言,變量可以根據(jù)計算的需求改變數(shù)據(jù)類型。這就允許引擎動態(tài)地完成類型轉(zhuǎn)換。所以,如果計算中包含數(shù)值和字符串,字符串會在完成計算之前轉(zhuǎn)換為數(shù)值,而數(shù)值則會在與字符串連接之前轉(zhuǎn)換為字符串。PHP提供了大量函數(shù)來檢查變量的數(shù)據(jù)類型。其中有3個函數(shù)可以檢查變量是否包含一個數(shù)字值,或更具體地,可以檢查變量是一個浮點數(shù)還是一個整數(shù)。函數(shù)is_numeric()可以檢查作為參數(shù)傳入的值是否是數(shù)值。函數(shù)is_int()和is_float()用于檢查具體的數(shù)據(jù)類型。如果傳入一個整數(shù)或浮點數(shù),這些函數(shù)會返回true,否則返回false,即使傳入一個有合法數(shù)值表示的字符串也會返回false。也可以強制引擎改變數(shù)據(jù)類型。這稱之為類型強制轉(zhuǎn)換,可以在變量或值前面增加(int)、(integer)、(float)、(double)或(real)實現(xiàn),也可以通過使用函數(shù)intval()或floatval()來實現(xiàn)。2 隨機數(shù)隨機數(shù)本身就是一門科學(xué)。已經(jīng)有很多不同的隨機數(shù)生成器實現(xiàn)。PHP實現(xiàn)了其中兩種:rand()和mt_rand()。rand()函數(shù)是libc(構(gòu)建PHP所用編譯器提供的基本庫之一)中定義的隨機函數(shù)的一個簡單包裝器。mt_rand()是一個很好的替代實現(xiàn),提供了很多精心設(shè)計的特性,而且mt_rand()甚至比libc中的版本還要快。兩個函數(shù)都提供一些函數(shù)來得到MAX_RAND的值。rand()的是getrandmax(),mt_rand()的是mt_getrandmax();3 格式化數(shù)據(jù)除了警告、錯誤等信息外,PHP的大部分輸出都是利用echo、print()和printf()之類的函數(shù)生成的。這些函數(shù)將參數(shù)轉(zhuǎn)換成一個字符串,并發(fā)給客戶端應(yīng)用程序。number_format()函數(shù)可以把整數(shù)和浮點數(shù)值轉(zhuǎn)換為一種可讀的字符串表示。4 數(shù)學(xué)函數(shù)abs() 絕對值floor() 舍去法取整ceil() 進(jìn)一法取整round() 四舍五入min() 求最小值或數(shù)組中最小值max() 求最大值數(shù)組中最大值PS:過一遍手冊函數(shù)庫第5章數(shù)組學(xué)習(xí)要點:1.什么是數(shù)組2.自定義鍵數(shù)組3.數(shù)組里的數(shù)組4.數(shù)組的排序5.數(shù)組的指針操作6.統(tǒng)計數(shù)組個數(shù)7.將數(shù)組轉(zhuǎn)換成標(biāo)量變量一什么是數(shù)組傳統(tǒng)上把數(shù)組(array)定義為一組有某種共同特性的元素,包括相似性和類型。每個元素由一個特殊的標(biāo)識符來區(qū)分,稱之為鍵(key);而每個鍵對應(yīng)一個值(value)。依照上表,我們創(chuàng)建一個數(shù)組。第一種:$userNames=array(李彥宏,周鴻祎,馬云,俞敏洪,李開復(fù),吳祁);這是索引數(shù)組初始化:數(shù)字索引的初始值是從0 開始計算的:userNames0-userName s5,代表這6個人的名字。第二種:通過range()函數(shù)自動創(chuàng)建一個數(shù)組$numbers=range(1,10) $letters=range(a,z)可以加第三個參數(shù)$numbers=range(1,10,2),第三個參數(shù)表示步長訪問數(shù)組的內(nèi)容:要訪問一個變量的內(nèi)容,可以直接使用其名稱。如果該變量是一個數(shù)組,可以使用變量名稱和關(guān)鍵字或索引的組合來訪問其內(nèi)容。$numbers0、$numbers1、$numbers2;等。改變數(shù)組的值:$numbers0=Lee;使用循環(huán)訪問數(shù)組由于數(shù)組使用有序的數(shù)字作為索引,所以使用一個for 循環(huán)就可以很容易地顯示數(shù)組的內(nèi)容:for ($i=0;$i19,李炎恢=27,胡心鵬=23);訪問數(shù)組元素$ages吳祁;$ages李炎恢;$ages胡心鵬;追加數(shù)組:首先,創(chuàng)建只有一個元素的數(shù)組,然后追加兩個元素。$ages=array(吳祁=19);$ages李炎恢=27;$ages胡心鵬=23;直接添加數(shù)組:無需創(chuàng)建,直接添加,添加第一個元素自動建立數(shù)組。$ages吳祁=19;$ages李炎恢=27;$ages胡心鵬=23;使用循環(huán)語句:因為相關(guān)數(shù)組的索引不是數(shù)字,因此無法使用for 循環(huán)語句中使用一個簡單的計數(shù)器對數(shù)組進(jìn)行操作。但是可以使用foreach 循環(huán)或list()和each()結(jié)構(gòu)。foreach ($ages as $key=$value) echo $key.=.$value.;使用each()結(jié)構(gòu)打印$ages 數(shù)組的內(nèi)容:each()函數(shù)返回數(shù)組的當(dāng)前元素,并將下一個元素作為當(dāng)前元素。while (!$element=each($ages) echo $elementkey;echo =;echo $elementvalue;echo ;使用list()函數(shù),可以用來將一個數(shù)組分解為一系列的值??梢园凑杖缦路绞綄⒑瘮?shù)each()返回的兩個值分開:list($name,$age)=each($ages);當(dāng)使用each()函數(shù)時,數(shù)組將記錄當(dāng)前元素。如果希望在相同的腳本中兩次使用該數(shù)組,就必須使用函數(shù)reset()將當(dāng)前元素重新設(shè)置到數(shù)組開始處。reset($prices);確定唯一的數(shù)組元素:array_unique();它會刪除掉里面相同值的元素。置換數(shù)組鍵和值:array_flip();它會對調(diào)數(shù)組中的key 和value;三數(shù)組里的數(shù)組數(shù)組不一定就是一個關(guān)鍵字和值的簡單列表-數(shù)組中的每個位置用來保存另一個數(shù)組。使用這種方法,可以創(chuàng)建一個二維數(shù)組??梢园讯S數(shù)組當(dāng)成一個矩陣,或者是一個具有寬度和高度或者行和列的網(wǎng)格。$products=array(array(蘋果,6,28.8),array(豬肉,2,32.1),array(餅干,3,45.3);顯示這個二維數(shù)組:echo |.$products00.|.$products01.|.$products02.|;echo |.$products10.|.$products11.|.$products12.|;echo |.$products20.|.$products21.|.$products22.|;此外,還可以使用雙重for 循環(huán)來實現(xiàn)同樣的效果:for ($row=0;$row3;$row+) for ($column=0;$column3;$column+) echo |.$products$row$column;echo |;使用列明的二維數(shù)組:$products=array(array(產(chǎn)品名=蘋果,數(shù)量=6,價格=28.8),array(產(chǎn)品名=豬肉,數(shù)量=2,價格=32.1),array(產(chǎn)品名=餅干,數(shù)量=3,價格=45.3);顯示這個二維數(shù)組:第一種方式:for ($row=0;$row3;$row+) echo |.$products$row產(chǎn)品名.|.$products$row數(shù)量.|.$products$row價格.|;第二種方式:for ($row=0;$row3;$row+) while (!list($key, $value)=each($products$row) echo |.$value;echo |;四數(shù)組的排序?qū)Ρ4嬖跀?shù)組中的相關(guān)數(shù)據(jù)進(jìn)行排序是一件非常有意義的事情。使用并且排序一個一維數(shù)組是非常簡單的。使用sort()函數(shù)將數(shù)組按字母升序進(jìn)行排序。$products=array(orange,banner,apple);sort($products);使用sort()函數(shù)將數(shù)字升序進(jìn)行排序。$prices=array(100,10,4,23,78);sort($prices);sort()函數(shù)的第二個參數(shù)是可選的。這個可選參數(shù)可以傳遞SORT_REGULAR(默認(rèn)值)、SORT_NUMERIC 或SORT_STRING。指定排序類型的功能是非常有用的。比如,當(dāng)要比較可能包含有數(shù)字2 和12 的字符串時,從數(shù)字角度看,2 要小于12,但是作為字符串,12卻要小于2。使用asort()函數(shù)和ksort()函數(shù)對相關(guān)數(shù)組排序創(chuàng)建一個包括3 個產(chǎn)品及價格的數(shù)組,然后將它們按價格的升序進(jìn)行排序:$prices=array(c=蘋果,a=豬肉,b=餅干);asort($prices);按說明排序使用ksort()函數(shù)ksort($prices)反向排序:sort()、asort()和ksort()都是正向排序,當(dāng)然也有相對應(yīng)的反向排序.實現(xiàn)反向:rsort()、arsort()和krsort()。在一些應(yīng)用程序中,可能希望按另一種方式對數(shù)組排序。函數(shù)shuffle()將數(shù)組個元素進(jìn)行隨機排序。函數(shù)array_reverse()給出一個原來數(shù)組的反向排序。shuffle($pictures);array_reverse($pictures);array_unshift()函數(shù)將新元素添加到數(shù)組頭,array_push()函數(shù)將每個新元素添加到數(shù)組的末尾。array_shift()刪除數(shù)組頭第一個元素,與其相反的函數(shù)是array_pop(),刪除并返回數(shù)組末尾的一個元素。array_rand()返回數(shù)組中的一個或多個鍵。五數(shù)組的指針操作在數(shù)組中瀏覽:each()、current()、reset()、end()、next()、pos()、prev();調(diào)用next()或each()將使指針前移一個元素。調(diào)用each($array_name)會在指針前移一個位置之前返回當(dāng)前元素。next()函數(shù)則有些不同-調(diào)用next($array_name)是將指針前移,然后再返回新的當(dāng)前元素。要反向遍歷一個數(shù)組,可以使用end()和prev()函數(shù)。prev()函數(shù)和next()函數(shù)相反。它是將當(dāng)前指針往回移一個位置然后再返回新的當(dāng)前元素。六統(tǒng)計數(shù)組個數(shù)count()和sizeof()統(tǒng)計數(shù)組下標(biāo)的個數(shù)array_count_values()統(tǒng)計數(shù)組內(nèi)下標(biāo)值的個數(shù)七將數(shù)組轉(zhuǎn)換成標(biāo)量變量:extract()對于一個非數(shù)字索引數(shù)組,而該數(shù)組又有許多關(guān)鍵字-值對,可以使用函數(shù)extract()將它們轉(zhuǎn)換成一系列的標(biāo)量變量。extract()函數(shù)原型如下:extract(array var_array,int extract_type,string prefix);函數(shù)extract()的作用是通過一個數(shù)組創(chuàng)建一系列的標(biāo)量變量,這些變量的名稱必須是數(shù)組中關(guān)鍵字的名稱,而變量值則是數(shù)組中的值。$array=array(key1=value1,key2=value2,key3=value3);extract($array);echo $key1.$key2.$key3;第6章目錄與文件學(xué)習(xí)要點:1.目錄操作2.磁盤、目錄和文件計算3.文件處理將相關(guān)的數(shù)據(jù)組織為文件和目錄等實體,這一直是計算環(huán)境的核心概念。出于這個原因,程序員需要有一種方法來獲得關(guān)于文件和目錄的重要細(xì)節(jié),如位置、大小、最后修改時間、最后訪問時間和其他確定信息。一目錄操作解析目錄路徑:basename()函數(shù)返回路徑的文件名部分。獲取路徑的目錄:dirname()函數(shù)返回路徑目錄部分。關(guān)于路徑的信息:pathinfo()函數(shù)創(chuàng)建一個關(guān)聯(lián)數(shù)組,其中包括:目錄名、基本名和擴展名。確定絕對路徑:realpath()函數(shù)將path 中的所有符號鏈接和相對路徑引用轉(zhuǎn)換為相應(yīng)的硬鏈接和絕對路徑。二磁盤、目錄和文件計算確定文件的大小:filesize()函數(shù)返回指定文件字節(jié)大小。計算磁盤的可用空間:disk_free_space()函數(shù)返回指定的目錄所在磁盤分區(qū)的可用空間。計算磁盤的總?cè)萘浚篸isk_total_space()函數(shù)返回指定的目錄所在磁盤分區(qū)的總?cè)萘?。確定文件的最后訪問時間:fileatime()函數(shù)返回文件的最后訪問時間,采用的Unix 時間戳格式。確定文件的最后改變時間:filectime()函數(shù)返回文件的最后改變時間,采用Unix 時間戳格式。確定文件的最后修改時間:filemtime()函數(shù)返回文件的最后修改時間,采用Unix 時間戳格式。三文件處理資源(resource)這個詞常常與可以發(fā)起輸入或輸出流的實體聯(lián)系起來。標(biāo)準(zhǔn)輸入或輸出、文件和網(wǎng)絡(luò)套接字都是資源的例子。因此你會經(jīng)常看到本節(jié)所介紹的很多函數(shù)都是在資源處理的上下文中討論的,而不是文件處理,這本身是因為所有這些函數(shù)都能夠與前面所述的資源結(jié)合使用。但是,由于這些函數(shù)與文件結(jié)合使用是應(yīng)用中最常見的。將數(shù)據(jù)寫入一個文件,有3 個步驟:1. 打開這個文件。如果文件不存在,需要先創(chuàng)建它。2. 將數(shù)據(jù)寫入這個文件。3. 關(guān)閉這個文件同樣,從一個文件中讀出數(shù)據(jù),也有3 個步驟:1. 打開這個文件。如果這個文件不能打開,就應(yīng)該意識到這一點并且正確地退出。2. 從文件中讀出數(shù)據(jù)。3. 關(guān)閉這個文件。打開文件要在PHP 中打開一個文件,可以使用fopen()函數(shù)。當(dāng)打開一個文件的時候,還需要指定如何使用它。也就是,文件模式。選擇文件模式:當(dāng)打開一個文件的時候,有3 中選擇:1. 打開文件為了只讀、只寫或者讀和寫。2. 如果要寫一個文件,你可能希望覆蓋所有已有的文件內(nèi)容,或者僅僅將新數(shù)據(jù)追加到文件末尾。如果該文件已經(jīng)存在,也可以終止程序的執(zhí)行而不是覆蓋該文件。3. 如果希望在一個區(qū)分了二進(jìn)制方式和純文本方式的系統(tǒng)上寫一個文件,還必須制定采用的方式。函數(shù)fopen()支持以上3 中方式的組合。$fp=fopen(文件路徑, 文件模式, 是否在incloude_path 中搜索一個文件,允許文件名以協(xié)議名稱開始(如http:/)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨床埋入式垂直褥式縫合優(yōu)缺點操作要點
- 《高中生人生價值觀》課件
- 2025挖掘機租賃合同模板
- 2025域名購買合同范本
- 2025醫(yī)療設(shè)備租賃合同范本
- 2025合作約定電腦速記培訓(xùn)合同范本
- 如何在WPS中復(fù)制流程圖
- 圖畫書資源利用的理性思考、實踐策略與發(fā)展評價
- 房屋修繕工程技術(shù)方案優(yōu)化與創(chuàng)新
- 前臺文員的職場技能培養(yǎng)計劃
- 2023年河南測繪職業(yè)學(xué)院單招綜合素質(zhì)考試筆試題庫及答案解析
- 無機保溫砂漿外墻外保溫系統(tǒng)施工工藝課件
- 產(chǎn)品追溯記錄表
- 高三二輪復(fù)習(xí):產(chǎn)業(yè)轉(zhuǎn)移以富士康的企業(yè)轉(zhuǎn)移為例課件
- 政府信息資源管理
- 中小微企業(yè)劃型證明
- 西南交大區(qū)段站工作組織課程設(shè)計2018
- 《監(jiān)察機關(guān)監(jiān)督執(zhí)法工作規(guī)定》測試題試題含答案
- Q∕GDW 12154-2021 電力安全工器具試驗檢測中心建設(shè)規(guī)范
- 初中文言文專項訓(xùn)練十篇(含答案)
- 煤礦頂板事故防治(1)
評論
0/150
提交評論