電力出版社《PHP+MySQL開發(fā)實例教程》全套課件(第3章)_第1頁
電力出版社《PHP+MySQL開發(fā)實例教程》全套課件(第3章)_第2頁
電力出版社《PHP+MySQL開發(fā)實例教程》全套課件(第3章)_第3頁
電力出版社《PHP+MySQL開發(fā)實例教程》全套課件(第3章)_第4頁
電力出版社《PHP+MySQL開發(fā)實例教程》全套課件(第3章)_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PHP+MySQL開發(fā)實例教程ISBN號:978-7-5083-7194-8作者:毛書朋聶慶鵬653工程指定教材第3章PHP5的基本語法3.1PHP語法基礎(chǔ)3.2PHP中的常量3.3PHP中的變量3.4運算符和表達式3.5流程控制語句3.6自定義函數(shù)3.7變量的作用域3.8邊學(xué)邊做:用函數(shù)遞歸實現(xiàn)階乘運算和斐波那契數(shù)列。3.9本章小結(jié)3.10練習題3.1PHP語法基礎(chǔ)3.1.1第一個PHP程序"hello,world!"幾乎已經(jīng)變成了所有程序語言的第一個范例。因此,在這兒也不例外,我們就先用PHP來寫一個輸出"hello,world!"的簡單的PHP程序。3.1PHP語法基礎(chǔ)3.1.1第一個PHP程序1:<!—文件4-1.php:一個php的簡單程序-->2:<html>3: <head>4: <title>Firstprogram</title>5: </head>6: <body>7: <?php8: echo"hello,world!";9: ?>10: </body>11:</html>3.1PHP語法基礎(chǔ)3.1.1第一個PHP程序我們再來通過瀏覽器窗口“查看=>源文件”操作來查看其源文件如下:<!--文件4-1.php:一個php的簡單程序--><html><head><title>FirstprogramforPHP</title></head><body>hello,world!</body></html>3.1PHP語法基礎(chǔ)3.1.2PHP代碼的嵌入方式1、利用分界符“<?php”和“?>”這是PHP最為普通的嵌入方式強烈建議使用此方式,這種寫法可以為你的程序在跨平臺使用時減少不必要的麻煩?。?、利用分界符“<?”和“?>”這種方式是簡寫方式,必需在php.ini文件中將shor_open_tag設(shè)置為On(PHP5中默認設(shè)置為On),否則編譯器將不予解析。3、利用分界符“<scriptlanguage="php">”和“</script>”這是類似于JavaScript和VBScript風格的嵌入方式4、利用分界符“<%”和“%>”這是一種具有ASP風格的嵌入方式,必須在“php.ini”文件中設(shè)置asp_tags為On,否則編譯器將不予解析。強烈建議少用這種方法,因當PHP與ASP源代碼混在一起時就麻煩嘍!3.1PHP語法基礎(chǔ)3.1.2PHP代碼的嵌入方式友情提示:其實,在編寫PHP程序最好的方法,是先處理好純HTML格式的文件之后,再將需要變量或其它處理的地方改成PHP程序。這種方法,可以讓您在開發(fā)上達到事半功倍的效果。3.1PHP語法基礎(chǔ)3.1.3PHP程序注釋方法在PHP的程序中,加入注釋的方法很靈活??梢允褂肅語言、C++語言或者是UNIX的Shell語言的注釋方式,而且也可以混合使用。具體方法如下:1、“//”:這是從C++語法中借鑒來的,該符號只能注釋一行。2、“/*”和“*/”:這是C語言的注釋符,符號之間的都將被注釋掉。

3

、“#”:這是UNIX的Shell語言風格的注釋符,也只能注釋一行。3.1PHP語法基礎(chǔ)3.1.4在PHP中引用外部文件引用文件的方法有兩種:require及include。兩種方式提供不同的使用彈性。其使用方法分別為:require的使用方法如require("MyRequireFile.php")、require(‘MyRequireFile.php’)、require"MyRequireFile.php"、require‘MyRequireFile.php’都是正確的。include使用方法如include("MyIncludeFile.php")、include(‘MyRequireFile.php’)、include"MyRequireFile.php"、include‘MyRequireFile.php’都是正確的。

3.1PHP語法基礎(chǔ)3.1.4在PHP中引用外部文件下面我們先建立一個名為“3-4.php”的文件,輸入如下代碼:1:<!--程序3-4.php:php文件的引用-->2:<html>3:<head>4:<title>PHP文件的引用</title>5:</head>6:<body>7:<?php8: echo"這是主文件“3-4.php”輸出的!<br>";9:include("include.msp");10:echo"<br>繼續(xù)執(zhí)行主文件“3-4.php”!";12:?>13:</body>13:</html>3.1PHP語法基礎(chǔ)3.1.4在PHP中引用外部文件然后我們再建立一個名為“include.msp”的文件,其代碼如下:1:<!--文件include.msp:被“3-4.php”文件所引用的引用-->2:<?php3:echo"這是從“include.msp”文件中輸出的!";4:?>3.1PHP語法基礎(chǔ)3.1.4在PHP中引用外部文件友情提示:“include.msp”為被引用的文件名,只要保證該文件的類型為文本類型,它的名字可以任意命名,包含其后綴。這樣你是不是可以作出很有個性的文件呢?3.2PHP中的常量PHP的常量包含兩種:一種是系統(tǒng)預(yù)定義常量,另一種是自定義常量。3.2PHP中的常量3.2.1預(yù)定義常量PHP向它運行的任何腳本提供了大量的預(yù)定義常量。不過很多常量都是由不同的擴展庫定義的,只有在加載了這些擴展庫時才會出現(xiàn),或者動態(tài)加載后,或者在編譯時已經(jīng)包括進去了。下面列舉了一些常用的系統(tǒng)預(yù)定義常量:

3.2PHP中的常量3.2.1預(yù)定義常量1、__FILE__這個默認常量是PHP程序文件名。若引用文件(include或require)則在引用文件內(nèi)的該常量為引用文件名,而不是引用它的文件名。2、__LINE__這個默認常量是PHP程序行數(shù)。若引用文件(include或require)則在引用文件內(nèi)的該常量為引用文件的行,而不是引用它的文件行。3、PHP_VERSION這個內(nèi)建常量是PHP程序的版本,如'3.0.8-dev'。4、PHP_OS這個內(nèi)建常量指執(zhí)行PHP解析器的操作系統(tǒng)名稱,如'Linux'。5、TRUE這個常量就是真值(true)。3.2PHP中的常量3.2.1預(yù)定義常量6、FALSE這個常量就是偽值(false)。7、E_ERROR這個常量指到最近的錯誤處。8、E_WARNING這個常量指到最近的警告處。9、E_PARSE本常式為解析語法有潛在問題處。10、E_NOTICE這個常式為發(fā)生不尋常但不一定是錯誤處。例如存取一個不存在的變量。這些E_開頭形式的常量,可以參考error_reporting()函數(shù),有更多的相關(guān)說明。3.2PHP中的常量3.2.1預(yù)定義常量1:<!--文件3-5.php:PHP預(yù)定義常量-->2:<HTML>3: <HEAD>4: <TITLE>PHP預(yù)定義常量</TITLE>5: </HEAD>6: <BODY>7: <?php8: echo(__LINE__);//輸出89: echo"<p>";10: echo(__FILE__);11: echo"<p>";12: echo(__LINE__);//輸出1213: echo"<p>";14: echoPHP_VERSION;15: echo"<p>";16: echoPHP_OS;17: ?>18: </BODY>18:</HTML>3.2PHP中的常量3.2.2自定義常量當然我們在實際編寫程序時,僅使用以上的系統(tǒng)預(yù)定義常量是不夠用。define()的功能可以讓我們自行定義所需要的常量。其定義的語法為:

define("常量名稱","常量內(nèi)容")用法詳見下例:1:<!--文件3-6.php:PHP自定義常量-->2:<HTML>3: <HEAD>4: <TITLE>PHP定義常量</TITLE>5: </HEAD>6: <BODY>7: <?php8: define("COPYRIGHT","Copyright©2006,");9: echoCOPYRIGHT;10: ?>11: </BODY>12:</HTML>3.2PHP中的常量3.2.2自定義常量友情提示:自定義常量在定義和使用事應(yīng)注意以下幾點,這也是自定義常量和變量不同處。在使用時一定要注意哦。常量只能用define()函數(shù)定義,而不能通過賦值語句;常量前面沒有美元符號($);常量可以不用理會變量范圍的規(guī)則而在任何地方定義和訪問;常量一旦定義就不能被重新定義或者取消定義;常量的值只能是標量(boolean,integer,float和string)。3.3PHP中的變量3.3.1變量定義與變量類型PHP的變量屬于松散的數(shù)據(jù)類型,具體使用時應(yīng)注意以下幾點:①變量名要以“$”開頭,且區(qū)分大小寫;②變量不必要預(yù)先定義或聲明;③變量在使用時編譯器可動態(tài)進行類型指定和轉(zhuǎn)換;④變量如果未賦值而直接使用,變量值將被視為空;友情提示:最好使用相同的變量命名風格,以免在團隊合作或自己查找錯誤的時候因變量大小的問題,浪費許多無謂的時間,那就得不償失了。變量之間若要轉(zhuǎn)換類型,當然是很自由的,但浮點數(shù)轉(zhuǎn)成整數(shù)就有點牽強了,不過可以將浮點數(shù)轉(zhuǎn)成字符串,也是很好處理的。3.3PHP中的變量3.3.1變量定義與變量類型PHP支持八種原始類型,其中包含四種標量類型、兩種復(fù)合類型、兩種特殊類型。詳細列表如下:分類類型類型名稱標量類型

boolean布爾型

integer整型

float浮點型,也作dobule

string字符串型復(fù)合類型

array數(shù)組

object對象特殊類型

resource資源

NULL3.3PHP中的變量3.3.1變量定義與變量類型1、布爾型(boolean)這是最簡單的類型,也被稱為邏輯型。其值非真即假,主要用于條件表達式和邏輯表達式中,用以控制程序流程。要指定一個布爾值,使用關(guān)鍵字TRUE或FALSE(兩個都不區(qū)分大小寫)。其它類型的數(shù)據(jù)均可以轉(zhuǎn)換為布爾型,詳見類型轉(zhuǎn)換。

3.3PHP中的變量3.3.1變量定義與變量類型2、整型(integer)整型數(shù)的字長和平臺有關(guān),通常最大值是大約二十億(32位有符號)。整型值可以用十進制,十六進制或八進制符號指定,前面可以加上可選的符號(-或者+)。要使用8進位整數(shù)可以在面加0(零),要使用16進位整數(shù)可以在面加0x。如:①$int1=1234//十進制正整數(shù)②$int1=-1234//負整數(shù)③$int1=01234//八進制整數(shù)④$int1=0x1234//十六進制整數(shù)

3.3PHP中的變量3.3.1變量定義與變量類型3、浮點型(double(floatingpointnumber))在32位的操作系統(tǒng)中,它的有效范圍是1.7E-308到1.7E+308。如:①$float1=666.66②$float2=6.6666e2//表示6.6666乘以10的2次方,為指數(shù)形式的浮點數(shù)應(yīng)當注意的是,浮點型變量顯示所用的十進制數(shù)的個數(shù)由php.ini文件中的precision(精度)定義,預(yù)定值為12,即浮點數(shù)的最長為14個數(shù)字。3.3PHP中的變量3.3.1變量定義與變量類型4、字符串(string)

無論是單一字符或數(shù)千字的字符串都是使用這個變量類型。值得注意的是要指定字符串給字符串變量時,要在頭尾都加上雙引號或單引號(例如:“這是字符串”或’這是字符串’)。而且在PHP中也提供一些轉(zhuǎn)移字符,用以輔助那些已經(jīng)被程序語法結(jié)構(gòu)占用了的特殊字符,其列表如下:3.3PHP中的變量3.3.1變量定義與變量類型4、字符串(string)友情提示:以上的轉(zhuǎn)義字符PHP中'和"是不一樣的,而且也可能無效,在使用時一定要測試通過了之后再用哦!再比如若“\n”換行無效,你可以使用“<br>”來換行。轉(zhuǎn)移字符含義\"雙引號\\反斜線\n換行\(zhòng)r回車\t制表符(TAB)\$美元符號($)\x兩位數(shù)字表示十六進位字符3.3PHP中的變量3.3.1變量定義與變量類型例:文件3-7.php:PHP變量的使用=>布爾型、整型、浮點型、字符串3.3PHP中的變量3.3.1變量定義與變量類型5、數(shù)組(array)數(shù)組變量可以是一維、二維或者更多維數(shù)組,其中的元素也很自由,可以是字符串、整型、浮點型、布爾型,甚至是數(shù)組或則對象等。在PHP中可以使用array()函數(shù)來創(chuàng)建數(shù)組,也可以直接進行賦值。使用array()來創(chuàng)建數(shù)組的語法為:array([key=>]value,...)其中key可以是integer或者string,是以后存取的標志,特別是當為integer時,沒有序號意義,value可以是任何值。3.3PHP中的變量3.3.1變量定義與變量類型5、數(shù)組(array)用array()函數(shù)創(chuàng)建數(shù)組的方法如下例:文件3-8.php:用array()函數(shù)創(chuàng)建PHP數(shù)組文件3-9.php:逐一給數(shù)組元素賦值文件3-10.php:數(shù)組元素簡潔賦值3.3PHP中的變量3.3.1變量定義與變量類型5、數(shù)組(array)PHP中多維數(shù)組與一維數(shù)組的區(qū)別在于多維數(shù)組有兩個或多個下標,他們的用法基本上是一樣的。下面的例子就是采用逐一給二維數(shù)組元素賦值的方法來創(chuàng)建和使用二維數(shù)組的。3.3PHP中的變量3.3.1變量定義與變量類型5、數(shù)組(array)文件3-11.php:多維數(shù)組的逐一賦值法文件3-12.php:用嵌套的array()函數(shù)創(chuàng)建PHP數(shù)組3.3PHP中的變量3.3.1變量定義與變量類型6、對象(object)object為對象類型變量,是類的具體化實例。我們將在第4章中詳細講解。3.3PHP中的變量3.3.1變量定義與變量類型7、資源(resource)資源是一種特殊變量,保存了到外部資源的一個引用。資源是通過專門的函數(shù)來建立和使用的。資源類型變量保存有為打開文件、數(shù)據(jù)庫連接、圖形畫布區(qū)域等的特殊句柄,在后面的章節(jié)中我們會陸續(xù)學(xué)習到。3.3PHP中的變量3.3.1變量定義與變量類型8、NULLNULL類型只有一個值,就是大小寫敏感的關(guān)鍵字NULL,表示一個變量沒有值。在下列情況下一個變量被認為是NULL:①被賦值為NULL。②尚未被賦值。③被unset()(銷毀指定的變量)。友情提示:在PHP中除了上面我們提到的8種類型,其實還有3種偽類型:mixed、number、callback。我們就不再進行講解。3.3PHP中的變量3.3.2變量類型轉(zhuǎn)換在前面我們已經(jīng)提到過,PHP的變量屬于松散的數(shù)據(jù)類型,也就是說PHP在變量定義時不需要(或不支持)類型定義,變量的類型是根據(jù)使用該變量的上下文所決定的。如果把一個字符串值賦給變量var,var

就成了一個字符串;如果又把一個整型值賦給var,那它就成了一個整數(shù)。那么,在PHP中是怎樣處理變量不同類型間的相互轉(zhuǎn)換的呢?PHP給我們提供了兩種類型轉(zhuǎn)換的方法:自動類型轉(zhuǎn)換和強制類型轉(zhuǎn)換。

3.3PHP中的變量3.3.2變量類型轉(zhuǎn)換PHP的自動類型轉(zhuǎn)換的一個例子是加號“+”。如果任何一個運算數(shù)是浮點數(shù),則所有的運算數(shù)都被當成浮點數(shù),結(jié)果也是浮點數(shù)。否則運算數(shù)會被解釋為整數(shù),結(jié)果也是整數(shù)。注意這并沒有改變這些運算數(shù)本身的類型;改變的僅是這些運算數(shù)如何被求值。也就是說,自動類型轉(zhuǎn)換并不能改變變量本身的數(shù)據(jù)類型,改變得僅僅是變量作為運算數(shù)時被求值得方式。

3.3PHP中的變量3.3.2變量類型轉(zhuǎn)換PHP中的類型強制轉(zhuǎn)換和C中的非常像:在要轉(zhuǎn)換的變量之前加上用括號括起來的目標類型。允許的強制轉(zhuǎn)換有:(int),(integer):轉(zhuǎn)換成整型(bool),(boolean):轉(zhuǎn)換成布爾型(float),(double),(real):轉(zhuǎn)換成浮點型(string):轉(zhuǎn)換成字符串(array):轉(zhuǎn)換成數(shù)組(object):轉(zhuǎn)換成對象其使用方法為:“(int)$變量名”或“(int)$變量名”。3.3PHP中的變量3.3.2變量類型轉(zhuǎn)換當轉(zhuǎn)換為boolean

時,以下值被認為是FALSE:①布爾值FALSE②整型值0(零)③浮點型值0.0(零)④空白字符串和字符串"0"⑤沒有成員變量的數(shù)組⑥沒有單元的對象(僅適用于PHP4)⑦特殊類型NULL(包括尚未設(shè)定的變量)所有其它值都被認為是TRUE(包括任何資源)。值得注意的是,-1和其它非零值(不論正負)一樣,被認為是TRUE!在表達式求值和條件判斷時一定要注意哦!3.3PHP中的變量3.3.3“變量的變量”變量的變量”是指在變量的名稱中含有變量的一類變量。其實“變量的變量”這個名稱并不太準確,有的地方也稱為可變變量或動態(tài)變量。就是說,通過“變量的變量”我們可以實現(xiàn)一個變量的變量名可以動態(tài)的設(shè)置和使用。下面我們通過一個實例就很容易理解它的使用方法。3.3PHP中的變量3.3.3“變量的變量”1: <!--文件3-14.php:變量的變量-->2: <HTML>3: <HEAD>4: <TITLE>變量的變量</TITLE>5: </HEAD>6: <BODY>7: <?php8: $var='hello';9: $$var='world!';//定義變量的變量10: echo$var.${$var}."<br>"; //輸出變量的變量11: echo$var.$hello; //輸出變量的變量12: ?>13: </BODY>14: </HTML>其運行結(jié)果如下圖:3.3PHP中的變量3.3.3“變量的變量”從程序中我們不難發(fā)現(xiàn)定義變量的方法,如第9行,輸出或使用變量的變量的方法有兩種如第10和11行,而且這兩方法的效果是一樣的。友情提示:要將“變量的變量”用于數(shù)組,必須解決一個模棱兩可的問題。這就是當寫下$$a[1]時,解析器需要知道是想要$a[1]作為一個變量呢,還是想要$$a作為一個變量并取出該變量中索引為[1]的值。解決此問題的語法是,對第一種情況用${$a[1]},對第二種情況用${$a}[1]。

3.3PHP中的變量3.3.4引用變量PHP中支持引用變量,這是從C++語言中借用而來的。對一個變量進行引用產(chǎn)生新變量后,新變量可以看作是原變量的一個別名,改變其中任何一個的值,兩個值都會發(fā)生改變。使用引用變量的方法是賦值時在右邊變量前加“&”符號,具體實例如下:

3.3PHP中的變量3.3.4引用變量

1:<!--文件3-15.php:引用變量-->2:<HTML> 3: <HEAD> 4: <TITLE>引用變量</TITLE> 5: </HEAD> 6: <BODY> 7: <?php8:$int1=8;9:$int2=&$int1;10:$int2++;11:echo$int1; 12: ?> 13: </BODY>14:</HTML>3.3PHP中的變量3.3.4引用變量引用變量在進行賦值時,系統(tǒng)只是簡單將新變量執(zhí)行原變量的地址,其中沒有變量復(fù)制的操作,所以速度非??臁H绻麉?shù)是大數(shù)組或?qū)ο?,使用引用變量進行參數(shù)傳遞能節(jié)省內(nèi)存并加快程序運行速度。不過其副作用就是引用值改變,原變量也會發(fā)生改變,因此是否能使用引用變量進行參數(shù)傳遞要視具體情況而定。

3.4運算符和表達式3.4.1PHP運算符PHP的運算符大部分是從C語言中借用而來的,共分以下幾類:算術(shù)運算符:+、-、*、/、%、++、--字符串運算符:.賦值運算符:=、+=、-=、*=、/=、%=、.=位運算符:&、|、^、<<、>>、~邏輯運算符:&&(And)、||(Or)、xor(Xor)、!(Not)比較運算符:<、>、<=、>=、==、===、!=其他運算符:$、&、@、->、=>、?:

3.4運算符和表達式3.4.1PHP的運算符1、算術(shù)運算符號就是用來處理四則運算的符號,這是最簡單,也最常用的符號,尤其是數(shù)字的處理,幾乎都會使用到算術(shù)運算符號.例:文件3-16.php:算術(shù)運算符的應(yīng)用符號意義+加法運算-減法運算*乘法運算/除法運算%取余數(shù)++累加--累減3.4運算符和表達式3.4.1PHP的運算符友情提示:PHP中的除法運算得到的結(jié)果是整數(shù)就是整數(shù),是實數(shù)就是實數(shù)。PHP中的求模運算會對兩操作數(shù)自動取整。另外,在PHP中字符也可以進行自增運算,這樣是不是就可做成選擇題的a、b、c、d選項序號呢?3.4運算符和表達式3.4.1PHP的運算符2、字符串運算符字符串運算符號只有一個,就是英文的句號“.”。它可以將字符串連接起來,變成合并的新字符串,也可以將字符串與數(shù)字連接,這時類型會自動轉(zhuǎn)換。具體用法見實例:文件3-17.php:字符串運算符的應(yīng)用3.4運算符和表達式3.4.1PHP的運算符3、賦值運算符符號意義=將右邊的值賦給左邊的變量+=將左邊的值加上右邊的值賦給左邊的變量-=將左邊的值減去右邊的值賦給左邊的變量*=將左邊的值乘以右邊的值賦給左邊的變量/=將左邊的值除以右邊值賦給左邊的變量%=將左邊的值對右邊取余數(shù)賦給左邊的變量.=將左邊的字符串連接到右邊3.4運算符和表達式3.4.1PHP的運算符4、位運算符PHP中的位運算符有6個,常用于二進制的運算場合,其具體含義如下:符號意義&按位與|按位或^按位異或<<按位左移>>按位右移~按位取反3.4運算符和表達式3.4.1PHP的運算符4、位運算符其中“~”是單目運算符,其他的都是雙目運算符。與、或、異或和取反的運算規(guī)則如下:0&0=0 0&1=0 1&0=0 1&1=1 (與:有假就假,都真才真)0|0=0 0|1=1 1|0=1 1|1=1 (或:有真就真,都假才假)0^0=0 0^1=1 1^0=1 1^1=0 (異或:相等為假,不等為真)~0=1 ~1=0 友情提示:在對十進制進行位運算時要先轉(zhuǎn)為二進制,然后按上述規(guī)則進行計算。3.4運算符和表達式5、邏輯運算符邏輯運算通常用來測試真假值。邏輯運算經(jīng)常用在條件判斷和循環(huán)處理中,用來判斷條件是否滿足和是否該離開循環(huán)或繼續(xù)執(zhí)行循環(huán)。邏輯運算符的具體含義如下:符號意義&&(and)邏輯與||(or)邏輯或xor邏輯異或!邏輯非3.4運算符和表達式5、邏輯運算符$x$y$x&&$y$x||$y$xxor$y!$x0000010101111001101111003.4運算符和表達式3.4.1PHP的運算符6、比較運算符比較運算符和邏輯運算的用法差不多,通過比較大小來測試真假值,經(jīng)常用在條件判斷和循環(huán)處理中,用來判斷條件是否滿足和是否該離開循環(huán)或繼續(xù)執(zhí)行循環(huán)。比較運算符的具體含義如下:友情提示:“===”為PHP4中新增的比較運算符,用于類型判等。例如:”3”===3將判為假。其他的比較運算符和C語言的基本一致,這兒就不再多說了。符號意義<小于>大于<=小于或等于>=大于或等于==等于(不包括類型)===完全相等(包括類型)!=不等于3.4運算符和表達式3.4.1PHP的運算符7、其他運算符:其中比較特殊的是三目運算符“?:”,例如:

(expr1)?(expr2):(expr3);

表示如果expr1的運算結(jié)果為true,則執(zhí)行expr2;否則執(zhí)行expr3。實際上它有點類以if...else循環(huán),但可以讓程序較精簡有效率。此外,還有用于新對象的定義符new、用于數(shù)組下標引用的方括號“[]”、表示結(jié)合性的大括號“{}”等。友情提示:PHP中的運算符是十分豐富的,而且使用起來也很靈活,希望大家多多上機實踐練習哦!符號意義$用于定義變量&變量的地址(加在變量前引用變量)@屏蔽錯誤信息(加在函數(shù)前)->引用對象的方法或者屬性=>用于給數(shù)組元素賦值?

:三目運算符3.4運算符和表達式3.4.2運算符優(yōu)先級與結(jié)合性運算符優(yōu)先級指定了兩個表達式綁定得有多“緊密”。例如,表達式1+5*3的結(jié)果是16而不是18是因為乘號(“*”)的優(yōu)先級比加號(“+”)高。必要時可以用括號來強制改變優(yōu)先級。例如:(1+5)*3的值為18。如果運算符優(yōu)先級相同,則使用從左到右的左聯(lián)順序。下表從高到低列出了運算符的優(yōu)先級。同一行中的運算符具有相同優(yōu)先級,此時它們的結(jié)合方向決定求值順序優(yōu)先級結(jié)合方向運算符附加信息1(最高)非結(jié)合newnew2左[array()3非結(jié)合++--遞增/遞減運算符

4非結(jié)合!~-(int)(float)(string)(array)(object)@類型

5左*/%算數(shù)運算符

6左+-.算數(shù)運算符和字符串運算符7左<<>>位運算符

8非結(jié)合<<=>>=邏輯運算符

9非結(jié)合==!====!==邏輯運算符

10左&位運算符和引用11左^位運算符

12左|位運算符

13左&&邏輯運算符

14左||邏輯運算符

15左?:三元運算符

16右=+=-=*=/=.=%=&=|=^=<<=>>=賦值運算符

17左and邏輯運算符

18左xor邏輯運算符

19左or邏輯運算符

20左,多處用到3.4運算符和表達式3.4.3表達式表達式,就是由操作數(shù)、操作符以及括號等所組成的合法序列。簡單地說,PHP中的常量或變量通過運算符連接后就形成了表達式,例如“$a=1”為一個表達式。表達式也有值,如上面的這個表達式的值就是1。 根據(jù)表達式中運算符類型的不同我們又可以把表達式分成:算術(shù)表達式、字符串連接表達式、賦值表達式、位運算表達式、邏輯表達式、比較表達式、其他表達式等。最常見的表達式是比較表達式和邏輯表達式,這種表達式的值只能是真或假,在下面一節(jié)的流程控制中,會大量使用這兩種表達式。 友情提示:“$a=1”為表達式,“$a=1;”則為一條語句。一定要分清楚哦!3.5流程控制語句幾乎在任何一種編程語言中,所有的程序都由3種基本的結(jié)構(gòu)組成,即:順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。 程序是由若干的語句組成的,如果在程序中的語句的執(zhí)行順序是從上到下依次逐句執(zhí)行的,那么這個程序的結(jié)構(gòu)就是順序結(jié)構(gòu),在這種結(jié)構(gòu)中沒有分支和反復(fù),這也是最簡單、最常見的流程結(jié)構(gòu),我們這里就不再多討論。

3.5流程控制語句PHP中提供了4條流程控制語句來實現(xiàn)分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),即: ①if……else…… 條件語句 ②switch 分支選擇語句 ③do……while…… 循環(huán)語句 ④for 循環(huán)語句 此外PHP還提供了break語句和continue語句,用以跳出分支結(jié)構(gòu)或循環(huán)結(jié)構(gòu),下面我們就將這些語句逐一進行詳細的介紹。3.5流程控制語句3.5.1分支控制語句一、if……else……語句

if……else……語句共有三種基本結(jié)構(gòu),此外每種基本結(jié)構(gòu)還可以嵌套另外兩種結(jié)構(gòu),而且嵌套的層次也可以不止是一層。3.5.1分支控制語句一、if……else……語句1、只有if的語句 這種結(jié)構(gòu)可以當作單純的判斷,可解釋成"若某條件成立則去做什么事情"。語法如下:if(expr){ statement}其中的expr

為判斷的條件表達式,通常都是有比較表達式或邏輯表達式來充當,而statement為符合條件的執(zhí)行語句部分程序,若程序只有一行,可以省略大括號{}。如果expr

為真,則執(zhí)行statement語句或語句體。3.5.1分支控制語句一、if……else……語句2、if……else……語句 這種結(jié)構(gòu)可解釋成"若某條件成立則去做什么事情,否則去做什么事情"。其語法如下if(expr){ statement1}else{ statement2}3.5.1分支控制語句一、if……else……語句3、elseif語句 前面的兩種分支結(jié)構(gòu)只能實現(xiàn)二路分支,用包含elseif的語句則可以實現(xiàn)多路分支,其語法如下:if(expr1){ statement1}elseif(expr2){ statement2} elseif…… else{statementn}3.5.1分支控制語句一、if……else……語句例:文件3-18.php:if……else……的應(yīng)用在上述3種基本結(jié)構(gòu)中,如果在statement語句體中還有if……else……語句,就構(gòu)成嵌套的if……else……語句。友情提示:在使用嵌套的if……else……語句時,一定要注意else和if的匹配、{和}的匹配。只有else語句沒有if的語句是不存在的。3.5.1分支控制語句二、switch語句嵌套的if……else……語句可以處理多分支流程情況,但使用起來比較繁瑣而且分析也不太清晰,為此PHP中又引進了switch語句。其語法如下switch(expr){ caseexpr1: statement1; break; caseexpr2: statement2; break; : : default:

statementN; break;}其中的expr

條件,通常為變量名稱。而case后的exprN,通常表示變量值。冒號后則為符合該條件要執(zhí)行的部分。一定要注意break為跳離循環(huán),千萬不能省略不寫。3.5.1分支控制語句二、switch語句例:文件3-19.php:switch的應(yīng)用友情提示:在設(shè)計switch語句時,要將出現(xiàn)機率最大的條件放在最前面,最少出現(xiàn)的條件放在最后面,可以增加程序的執(zhí)行效率。上例由于每天出現(xiàn)的機率相同,所以不用注意條件的順序。3.5流程控制語句3.5.2循環(huán)控制語句一、do……while……語句 在PHP中,do……while……循環(huán)語句有兩種結(jié)構(gòu),一種只有while……部分,另一種是do……while……兩部分都有。3.5.2循環(huán)控制語句一、do……while……語句1、只有while……部分的語句 其語法如下while(expr){ statement} 2、do……while……兩部分都有的語句其語法如下:do{ statement}while(expr);3.5.2循環(huán)控制語句一、do……while……語句其中的expr

為判斷的條件,通常都是用邏輯表達式或比較表達式充當判斷的條件。而statement為符合條件的執(zhí)行部分程序,若程序只有一行,可以省略大括號{}。二者的區(qū)別在于:前者是先判斷再執(zhí)行,后者是先執(zhí)行再判斷。對于expr開始為真的情況,而且是沒有區(qū)別的。如果expr開始為假,則前者不執(zhí)行任何語句就跳出循環(huán),而后者仍要執(zhí)行一次循環(huán)才能跳出循環(huán)。3.5.2循環(huán)控制語句一、do……while……語句例:文件3-20.php:do……while……的應(yīng)用3.5.2循環(huán)控制語句二、for語句

for語句僅有單純的一種,沒有其他變化,但同時他也是最復(fù)雜,功能最強大的循環(huán),任何while循環(huán)和do……while……循環(huán)都可以用for循環(huán)代替,其語法如下:

for(expr1;expr2;expr3){ statement}

其中expr1為條件的初始值,expr2為判斷的條件,通常都是用比較表達式或邏輯表達式充當判斷的條件,expr3為執(zhí)行statement后要執(zhí)行的部份,即循環(huán)步長,用來改變條件,供下次的循環(huán)判斷,如加1、減1等等。而statement為符合條件后執(zhí)行的語句或語句體,若statement只有一條語句組成,則可以省略大括號{}。3.5.2循環(huán)控制語句二、for語句例3-20程序的主體部分可以用for循環(huán)改寫如下:<?phpfor($i=1;$i<=10;$i++){echo$i.".以后不敢了<br>";}?><?php$i=1;for(;$i<=10;$i++){echo$i.".以后不敢了<br>";}?><?phpfor($i=1;;$i++){if($i>10)break;//循環(huán)標志結(jié)束,跳出循環(huán)

echo$i.".以后不敢了<br>";}?><?phpfor($i=1;$i<=10;){echo$i.".以后不敢了<br>";$i++;}?>3.5流程控制語句3.5.3break和continue語句我們在switch和for語句的舉例中都用到了break語句,他的作用就是跳出整個的switch或for語句體,執(zhí)行其外的下面的語句。而continue經(jīng)常用在for或do……while……循環(huán)語句中,表示跳出本次循環(huán),繼續(xù)進入下一次的循環(huán)。3.5流程控制語句3.5.3break和continue語句例:文件3-21.php:break/continue的應(yīng)用3.6自定義函數(shù)在程序的編寫過程中往往會有一些要反復(fù)用到的功能模塊,如果每次都要重復(fù)編寫這些代碼,不僅浪費時間,而且還會使程序變得冗長、可讀性差,維護起來也很不方便。PHP允許程序設(shè)計者將常用的流程或者變量等元件,組織成一個固定的格式。也就是說用戶可以自行組合函數(shù)或者是類。這樣在編寫好函數(shù)或則類之后,我們在使用時就不必關(guān)心其中的細節(jié),拿過來就可以用;要做功能修改時,只需修改函數(shù)中的內(nèi)容即可。下面我們就來看一下自定義函數(shù)的定義與使用。PHP中的函數(shù)分為內(nèi)置函數(shù)和用戶自定義函數(shù)兩大類。有關(guān)內(nèi)置函數(shù)的知識我們將在第5章中詳細講解,下面我們就自定義函數(shù)進行講解。3.6自定義函數(shù)3.6.1函數(shù)定義與調(diào)用

PHP中的函數(shù)C語言一樣。函數(shù)定義的語法為:function函數(shù)名(形式參數(shù)列表){

函數(shù)體; return返回值;}3.6自定義函數(shù)3.6.1函數(shù)定義與調(diào)用PHP中的函數(shù)有無返回值都允許。而且,在函數(shù)的名稱上,PHP對于大小寫的管制比較松散??梢栽诙x函數(shù)時寫成大寫的名字,而在使用時使用小寫的名字。不過,PHP對用戶自定義函數(shù)名也是有一些要求的,具體如下: ①不能與PHP的內(nèi)部函數(shù)同名 ②不能與PHP的關(guān)鍵字重名 ③不能以數(shù)字或下劃線開頭 ④不能包含點號“.”和中文字符 函數(shù)體是實現(xiàn)函數(shù)功能的語句體,與for循環(huán)等不一樣,函數(shù)體中即使只有一條語句,外面的大括號也不能省略。3.6自定義函數(shù)3.6.1函數(shù)定義與調(diào)用函數(shù)調(diào)用的語法為: 函數(shù)名(實際參數(shù)列表); 實際參數(shù)列表要與形式參數(shù)列表相對應(yīng)(有默認參數(shù)時實際還要與默認參數(shù)對應(yīng))。如果實際參數(shù)比形式參數(shù)多,多于的參數(shù)會被自動舍棄;如果實際參數(shù)比形式參數(shù)少,實際參數(shù)會被一一填入形式參數(shù)中,不足部分以空參數(shù)代替。實際參數(shù)和形式參數(shù)之間的傳遞機制我們會在下一小節(jié)中講述。 如果函數(shù)有返回值,還可以利用函數(shù)調(diào)用為變量賦值,其語法為: 變量=函數(shù)名(實際參數(shù)列表);3.6自定義函數(shù)3.6.1函數(shù)定義與調(diào)用3-22.php:函數(shù)的定義和調(diào)用=>求階乘3.6自定義函數(shù)3.6.2參數(shù)傳遞在使用函數(shù)時,要填入與函數(shù)形式參數(shù)個數(shù)相同的實際參數(shù)(有默認參數(shù)的除外),在程序運行過程中,實際參數(shù)就會傳遞給相應(yīng)的形式參數(shù),然后在函數(shù)中實現(xiàn)對數(shù)據(jù)的處理和返回。在由實際參數(shù)向形式參數(shù)傳遞的過程中,共有值傳遞、引用傳遞、默認參數(shù)3種機制。3.6自定義函數(shù)3.6.2參數(shù)傳遞1、值傳遞作為值傳遞,就是將實際參數(shù)的值拷貝到形式參數(shù)中。然后由形式參數(shù)參與函數(shù)內(nèi)部的計算,函數(shù)調(diào)用結(jié)束后,實際參數(shù)的值不會發(fā)生改變。用這種方式調(diào)用的函數(shù)一般都有返回值或輸出值,否則函數(shù)調(diào)用實際上什么也沒有做。例3-22就是使用的這種傳遞方式。初學(xué)者一般常使用這種傳遞方式。3.6自定義函數(shù)3.6.2參數(shù)傳遞2、引用傳遞 如果要實現(xiàn)形式參數(shù)改變時實際參數(shù)也發(fā)生相應(yīng)的改變,就要使用引用傳遞的方式。參數(shù)的引用傳遞也有兩種方法:①在函數(shù)定義的時候,在形式參數(shù)前面加上“&”符號,例如:

functionfun(&$var1){……}②在函數(shù)調(diào)用的時候,在實際參數(shù)前面加上“&”符號,例如:

functionfun($var1){……} fun(&$var2)

如果形式參數(shù)$var1的值在函數(shù)中發(fā)生改變,實際參數(shù)$var2的值也會發(fā)生相應(yīng)的改變。3.6自定義函數(shù)3.6.2參數(shù)傳遞3、默認參數(shù)

PHP還支持有默認值的參數(shù),即在函數(shù)定義時可以為一個或多個形式參數(shù)指定默認值。3.6自定義函數(shù)3.6.2參數(shù)傳遞例:文件3-23.php:函數(shù)參數(shù)的傳遞3.6自定義函數(shù)3.6.3變量函數(shù)PHP支持變量函數(shù)的概念,可以方便地利用變量實現(xiàn)對函數(shù)的調(diào)用。使用的基本格式為:

functionfun(){……} $var=”fun”; $var();

其中調(diào)用$var()就相當于調(diào)用函數(shù)fun(),$var()為可變函數(shù)??勺兒瘮?shù)與普通函數(shù)調(diào)用時的最大區(qū)別就在于可

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論