第8章 PHP的函數.ppt_第1頁
第8章 PHP的函數.ppt_第2頁
第8章 PHP的函數.ppt_第3頁
第8章 PHP的函數.ppt_第4頁
第8章 PHP的函數.ppt_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第8章 PHP的函數,PHP提供了兩種類型的函數,一種是用戶自定義函數,完全由用戶自己定義,通過講解用戶自定義函數,掌握函數的工作流程、函數的返回值、函數的作用域以及函數的兩種值傳遞方式,并對遞歸函數做舉例說明;一種是內置庫函數,內置庫函數是PHP中已經預定義的函數,并且它的運行方式在創(chuàng)建時就已預定義。,【例8-1】用戶自定義函數與函數值的返回,1)函數聲明的語法結構: function 函數名(參數列表) 函數體; return 返回值; 其中: 函數名:是希望創(chuàng)建的函數名,以后要引用或者調用該函數就必須使用這個函數名,函數名必須是唯一的。函數名的命名規(guī)則與變量的命名規(guī)則一樣,但切記:函數名

2、前面不加$符號,這是與變量的不同之處。 參數列表:函數名后必須有一個括號,里面包括的內容稱為參數或者參數列表,允許參數為空,或者只有一個參數,或者有多個參數。,【例8-1】用戶自定義函數與函數值的返回,函數體:函數獨立完成某一特定任務的一組語句,如果有兩個或者多個語句,代碼必須放在大括號內部(),但是,如果函數的代碼部分只包含有一個語句,則可以不使用大括號。 return返回值:返回值不是每個函數都必須有的,這和函數的功能以及用戶的需求與自定義有關。返回值指完成函數后返回到主程序中的值。函數的返回值可以是數值、字符等變量。返回值不能有多個返回值,但是如果要返回多個值,則可以將數組作為一個函數的

3、返回值。 在PHP 5后,允許將函數定義語句放在函數調用語句之后,即可以先調用一個未被定義的函數,然后再去定義函數。但是如果函數的定義是有條件的,那么在有條件的定義發(fā)生前函數是不能被調用的。,【例8-1】用戶自定義函數與函數值的返回,(2)函數的工作流程為: 1)定義一個函數。 2)主程序調用函數,傳過去值或者空。 3)函數接收值,并進行處理。 4)返回結果到主程序,并把控制返回到調用它的腳本。,【例8-2】函數的作用域,作用范圍只在函數內,在函數外的任何地方都不能使用在函數內部聲明的變量,這就叫做函數內部的局部變量。 global語句允許從腳本的任何位置訪問函數內部定義的變量,因此,在聲明變

4、量的時候,前面必須加上global語句,語法如下: global $變量名1,$變量名2; 而加上global的變量也可以簡單地稱之為全局變量 注意:static變量和global變量有很大的差別。global變量可以從整個程序的任何位置訪問。而static變量仍然是函數內部的局部變量,與普通變量不同的是,一旦函數的執(zhí)行結束后,這種變量不會丟失自己最后的值。,【例8-3】函數的參數傳遞,函數傳遞參數的三種方式,一種是傳遞默認參數值,一種是用值傳遞參數,一種是按引用傳遞參數。 第一種:傳遞默認參數值。 要使用這種方法,函數必須在定義時有一個默認參數,在主程序中對該函數進行調用時,若實參為空,則自

5、動調用默認參數。如本例中定義的函數: function cube($value=8) /立方體體積函數定義 $value=$value+1; return $value*$value*$value; /返回體積值 給定了一個默認值$value為8,所以當主程序中出現沒有參數的調用: echo cube(); /傳遞默認的參數值 函數自動按照默認值8+1來計算立方體的體積,結果為9*9*9,等于729。,【例8-3】函數的參數傳遞,第二種:用值傳遞參數。 要使用這個方法,必須在主程序中調用函數時傳遞一個值(或者參數)給函數。如: echo cube(6); /用值傳遞參數 傳遞一個數值6給cub

6、e()函數中的$value,然后$value+1,結果為7*7*7,等于343。 又如: $side=12; echo cube($side); echo ; echo $side; 在主程序中定義了一個變量$side,為其賦值12,然后傳給函數cube()的$value,然后$value+1,結果為13*13*13,等于2197,回到主程序,再輸出$side時,我們會發(fā)現,結果仍然為12,$side的值沒有變化。這里參數傳遞的只是一個副本,并沒有涉及到存儲地址內容的變化。,【例8-3】函數的參數傳遞,第三種:按引用傳遞參數。 在按值傳遞參數時,只有參數的副本傳遞給被調用的函數,在被調用函數內

7、部對這些值的任何修改都不會影響到主程序函數中的實參。但如果采取按引用傳遞參數,就可以直接修改存儲地址的內容了。如: echo cube(,【例8-4】函數的遞歸,像本例中的階乘計算,若編寫如下的代碼: $sum=$n*($n-1)*($n-2)*1 那么當這個n數據比較大的時候就會發(fā)現,這個$sum的計算將是一個非常長的計算過程,計算過程完全沒有效率可言,更不用說要求多個數的階乘了。 通過本例的函數遞歸操作可以看到,5、15、25階乘只需要調用jieche()函數即可,過程簡單,有效地去除了程序的冗余。 注意: (1)在遞歸中要有使遞歸中止的代碼,不能使遞歸陷入無限循環(huán)之中。 (2)要避,【例

8、8-5】PHP內置庫函數之數學函數,一般的計算可以通過運算符解決,如加、減、乘、除等。使用 PHP 的數學計算內部函數,可以幫助我們解決一些比較復雜的計算。 round:對浮點數進行四舍五入。 round 函數的語法如下: round(float,precision) 其中,參數 precision 表示小數點后面要保持的精度位數。如果不寫參數 precision,表示四舍五入到整數位,比如: echo round(3.4);/ 3 echo round(3.5); / 4 echo round(3.6); / 4,【例8-5】PHP內置庫函數之數學函數,floor:舍去法求整。 floor

9、函數的語法如下: floor (value) floor 函數返回不大于 value 的最大整數,即將 value 的小數部分舍去取整。示例如下: echo floor(4); /4 echo floor(4.3); / 4 echo floor(9.999); / 9 ceil:進一法取整。 ceil 函數的語法如下: ceil (value) ceil 函數返回不小于 value 的最小整數。示例如下: echo ceil(4); /4 echo ceil(4.3); / 5 echo ceil(9.999); / 10,【例8-5】PHP內置庫函數之數學函數,pow:求冪。 pow 函數

10、的語法如下: pow (base,exp) pow 函數返回 base 的 exp 次方的冪。下面的示例表示求 2 的8 次方,返回結果是256。 echo pow(2, 8); / 256 rand:產生一個隨機整數。 rand 函數的語法如下: rand (min,max) rand 函數返回一個介于最小值 min 和最大值 max 之間(包括min、max)的隨機整數。比如下面的示例返回一個 26 之間的隨機整數。 echo rand(2,6);,【例8-5】PHP內置庫函數之數學函數,max:返回參數中數值最大的值。 如果 max 函數只有一個參數且為數組,max 返回該數組中最大的值

11、。 echo max(1, 3, 5, 6, 7); / 7 echo max(array(2, 4, 5); / 5 min:返回參數中的最小值。 如果 min 函數只有一個參數且為數組,min 返回該數組中最小的值。 echo min(1, 3, 5, 6, 7); / 1 echo min(array(2, 4, 5); / 2 decbin:十進制轉換為二進制。 decbin 函數的語法如下: decbin (number) decbin 返回一個字符串,即返回參數 number 的二進制表示。 echo decbin(12);/1100 bindec:二進制轉換成十進制。 binde

12、c 函數的語法如下: bindec (binary_string) bindec 函數將二進制字符串 binary_string 轉換成一個十進制整數。示例如下: echo bindec(110011); /51,【例8-5】PHP內置庫函數之數學函數,hexdec:十六進制轉換為十進制。 dechex:十進制轉換為十六進制。 dechex和hexdec 函數示例如下: echo dechex(47); /2f echo hexdec(2f); /47 decoct:十進制轉換為八進制。 octdec:八進制轉換為十進制。 echo decoct(12); /14 echo octdec(14

13、); /12,【例8-6】PHP內置庫函數之字符串函數,strlen strlen 函數能得到一個字符串的長度。下面的示例中,得到的變量 $a 的長度為 8。 $a = bcdef; echo strlen($a); /8 trim trim 函數的功能是將字符串兩邊的空格都去掉。比如下面示例中變量 $a 的值是 “abcdef”,字符串兩邊各有一個空格,trim 之后,由于去掉字符串兩邊的兩個空格,字符串的長度就是6。 $a = abcdef ; echo strlen(trim($a); /6,【例8-6】PHP內置庫函數之字符串函數,ltrim ltrim 函數的功能是將字符串左邊的空格

14、去掉。 echo nice, try; /nice try echo nice,ltrim( try); /nicetry rtrim rtrim 函數的功能是將字符串右邊的空格去掉。 echo a , b; /a b echo rtrim(a ),b; /ab,【例8-6】PHP內置庫函數之字符串函數,substr 通過 substr 函數可以得到字符串的一部分。substr 函數的語法如下: substr(string,start,length) 意思是從字符串 string 的 start 位置開始,截取長度為 length 的字符串。字符串 string 的第一個字符的位置是0,而不是

15、1。示例如下: echo substr(hello,world! ,0,3);/hel 上面示例表示,從字符串第1個字符開始,截取3個字符,返回結果是 hel。 echo substr(hello,world! ,3,5);/lo,wo 上面示例的意思是從字符串 hello,world! 的第4個字符開始,截取5 個字符,得到的結果是 lo,wo。 也可以不寫參數 length,表示從 start 位置開始截取后面所有的字符串,比如: echo substr(hello,world!, 3);/lo,world!,【例8-6】PHP內置庫函數之字符串函數,strtolower strtolow

16、er 的功能是將字符串全部變成小寫。示例如下: echo strtolower(SUNNY DAY!);/sunny day! strtoupper strtoupper 和 strtolower 相反,功能是將字符串都變成大寫。示例如下: echo strtoupper(hello,world!);/ HELLO,WORLD! str_replace str_replace 的作用是替換字符串。str_replace 函數的語法如下: str_replace(search,replace,subject) 意思是在 subject 字符串中找到任何符合 search 的字符串,然后用 rep

17、lace 代替所有 search 字符串。 示例如下: echo str_replace(sunny,happy,it is a sunny day!); 上面的例子中,用 happy 替代 it is a sunny day! 字符串中所有的 sunny ,返回的結果是it is a happy day!。,【例8-6】PHP內置庫函數之字符串函數,htmlspecialchars(string string) 函數的功能是:將字符串參數string中的特殊符號(如、”等)轉化為HTML標記。該具體轉換內容如下: 。 本例中的htmlspecialchars($text)函數把字符串$tex

18、t中的特殊符號都轉換成了HTML標記。,【例8-7】PHP內置庫函數之判斷數據類型函數,is_array(mixed var) 判斷變量是否為數組。如果參數var是數組就返回TRUE,否則返回FALSE。 is_bool(mixed var) 判斷變量是否為布爾型。如果參數var是布爾型就返回TRUE,否則返回FALSE。 is_float(mixed var) 判斷變量是否為浮點數。如果參數var是浮點數就返回TRUE,否則返回FALSE。 is_int(mixed var) 判斷變量是否為整數。如果參數var是整數就返回TRUE,否則返回FALSE。 如果參數var是對象型就返回TRUE,否則返回FALSE。判斷變量是否為NULL值。如果參數var未被定義或者被設置為NULL或者雖然已經被定義但又被unset()取消定義,則返回TRUE,否則返回FALSE。,【例8-7】PHP內置庫函數之判斷數據類型函數,is_numeric(mixed var) 判斷變量是否為數字或者數字字符串。如果參數var為數字或者數字字符串則返回TRUE,否則返回FALSE。 is_object(mixed var) 判斷變量是否為一個對象。如果參數var是對象型就返回TRUE,否則返回FALSE。 is_string(mixed var) 判斷變量是否為字符串。如果參數v

溫馨提示

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

評論

0/150

提交評論