PHP-----PHP程序設計基礎教程----第三章函數

3.1 初識函數php

3.1.1 函數的定義數組

  語法:函數

function 函數名([參數1,參數2,......]) { 函數體 }

  (1)function:在聲明函數時必須使用的關鍵字spa

  (2)函數名:建立函數的名稱,是有效的PHP標識符code

     ①函數名是惟一的,不能重複定義;orm

     ②由字母、數字、下劃線組成,必須以英文字母或者下劃線開頭;blog

     ③函數名不區分大小寫,常量和變量區分大小寫;ip

     ④採用駱駝命名法,第一個單詞首字母小寫,後續單詞首字母大寫;(建議)內存

     ⑤獲取數據以get開頭,設置數據以set開頭,刪除數據以del開頭;(建議)作用域

   (3)[參數1,參數2......]:外界傳遞給函數的值,可選。當有多個參數時,各參數用「,」隔開。

     ①形參

      a.定義時候,設置形參參數列表,在函數調用時,將相應的參數傳遞到函數內部進行加工給處理。

     ②默認值

      a.參數較多的狀況下,參數值比較固定時,某個參數的值可能不變,能夠設置默認值。 function fun($para1,$para2=3) { } //$para2爲默認闡述 

      b.調用時,沒有爲有默認值的參數傳遞參數,則自動使用默認值。設置了形參默認值,一樣能夠在調用時傳遞實參。

      c.有默認值的形參,該參數儘可能靠後設置。

      d.默認值不能夠是變量。

     ③實參

      a.調用時將數據傳遞給對應的形參。實參能夠是具體的值,也能夠爲變量。要與形參的個數一致。       

 

    (4)函數體:函數定義的主體,專門用以實現特定的功能

3.1.2 函數的調用

  遵循先聲明後調用原則。實際上,調用的位置能夠在聲明位置以前,不違背先聲明後調用原則。PHP執行的第一階段爲預編譯,將函數代碼存放在內存的代碼區,執行階段,使用函數名字調用函數。

  語法:

     函數名([參數1,參數2...]) 

3.1.3 函數的返回值

  在調用一個函數後,能獲得處理結果,這個結果就是函數返回值。在PHP函數中,使用return語句能夠將返回值傳遞給調用者。

  return功能:

  ①將數據返回到調用的地方,調用函數的位置要接收,不然返回值無心義;

  ②結束函數的執行,return後面的語句不執行,最多能夠執行一個return語句;

  ③return語句不能一次性返回多個值,但能夠經過一個返回一個數組來是實現;

  ④儘可能使用return語句返回信息,而不是直接輸出;

 

3.2 函數的高級應用

3.2.1 函數中變量的做用域

  變量須要先定義才能使用,但並不意味着變量定義後就能夠隨時使用。變量須要在它的做用範圍內才能夠被使用,這個做用範圍稱爲變量的做用域。在函數中定義的變量稱爲局部變量,在函數外定義的變量稱爲全局變量。函數外部定義的變量,在函數內部沒法使用;函數內部定義的變量,函數外部沒法使用。

  示例:

<?php $name='歐陽華夏'; //定義函數
    function getName(){ echo $name; } //調用函數
    getName();//報錯:Notice:Undefined variable:name in F:\Site\site2\index.php on line 10 在函數內部name的值爲
?>

  從上述示例代碼看出,程序提示變量$name未定義,$name的值也沒有輸出。說明在這種狀況下,函數內部不能使用定義在函數外部的變量,

  若是但願在函數內部使用函數外面的變量,須要在函數內部使用關鍵字 global 修飾變量。以下:

<?php $name='歐陽華夏'; //定義函數
    function getName(){ global $name; echo $name; } //調用函數
    getName();//輸出結果是歐陽華夏
?>

  因而可知,使用關鍵字 global 能夠手動的將函數中使用的變量變爲全局變量。

  局部做用域與全局做用域的關係:

  全局做用域與局部做用域沒有交集,不一樣函數的做用域,也沒有交集。

            

  超全局變量(預約義全局變量)$GLOBALS

  如何在局部做用域使用全局變量或者在全局做用域使用局部變量?

  $GLOBALS是一個包含了所有變量的全局組合數組,變量的名稱就是數組的鍵。

  $GLOBALS專門用來實現數據的超全局化的超全局變量。做用是引用全局做用域中的所有全局變量。

  代碼以下:

<?php $name='歐陽華夏'; //定義函數
    function getName(){ //使用$GLOBALS訪問全局變量
        echo "在函數內部name的值爲:" . $GLOBALS["name"]; } //調用函數
    getName();//輸出結果---->在函數內部name的值爲:歐陽華夏
?>

  注意:

  ①建立一個全局變量,系統會自動在$GLOBALS中建立變量名爲下表的元素;

  ②在$GLOBALS中添加元素,自動建立相應名字的全局變量;

  ③刪除或修改$GLOBALS數組的元素,會致使全局變量同步刪除或修改;

3.2.2 可變函數

  PHP支持可變函數的概念,即一個變量名後有圓括號,PHP將尋找與變量的值同名的函數,並嘗試執行它。

  代碼:

<?php function test(){ echo "可變函數的本真函數"; } //定義變量,將上述函數賦值給該函數
    $var="test"; $var();//結果是:可變函數的本真函數
?>

  注意:在變成過程當中,儘可能少用或者不用可變函數。

3.3 字符串相關函數

3.3.1 常見的字符串定義語法

  單引號:

  ①不解析變量

  ②單引號中包括單引號須要轉義

  ③單引號中能夠包括雙引號

  雙引號:

  ①能夠解析變量

  ②變量最好使用變量{}邊界符號

  ③單引號與雙引號嵌套問題:只有最外層是雙引號時,才能解析變量

  heredoc字符串定義結構

  單引號和雙引號,在多行字符串、複雜字符串如JS代碼的定義時顯得不便

  語法:

$str = <<<heredoc標記名 字符串內容 heredoc標記名;

  注意事項:

  • 以<<<開頭,其後跟着自定義的標識符。命名遵循PHP標識符命名規範;
  • 在換行的位置,開始字符串的書寫;
  • 字符串書寫完成後,換行輸入原先自定義的標識符。標識符必須爲本行第一列;
  • 兩處的標識符必須一致;
  • 能夠解析變量。單引號和雙引號不須要轉義或者處理。通常用於保存較長字符串或者JS代碼;

3.3.2 字符串的長度問題

  單字節字符串的字節數(等於字符串)----------strlen();

<?php //strlen(字符串)
    $length=strlen("welcome to China"); echo $length;//結果是:16
?>

  多字節字符串的字節數(一個漢字佔三個字節)----------mb_strlen();

/* PHP提供多字節字符串擴展模塊php_mbstring.dll(動態鏈路庫文件)。開啓該擴展後,可使用mb_strlen函數來統計多字節字符串的字符長度。 */ mb_strlen(字符串)

3.3.3 字符串大小寫轉換

   string strtolower (string $string)  將$string中全部的字母字符轉換爲小寫並返回;

   string strtoupper (string $string 將$string中全部的字母字符轉換爲大寫並返回;

   string ucfirst    (string $string 將$string的首字符(若是首字符是字母)轉換爲大寫字母並返回;

3.3.4 去除首尾空白字符

   string trim ( string $string)  將$string去除首尾空白字符並返回;

   string ltrim ( string $string) 將$string去除左邊空白字符並返回;

   string rtrim ( string $string) 將$string去除右邊空白字符並返回;

3.3.5 字符串重複與替換

   str_replace ( mixed $search , mixed $replace , mixed $subject )  該函數返回一個字符串或者數組,該字符串或者數組是將subject中全部的search替換爲replace的結果;

   string str_repeat ( string $input , int $multiplier ) 返回input重複multiplier次後的結果;

3.3.6 字符串輸出函數printf()

   printf ( string $format [, mixed $args [, mixed $... ]] ) 依據format格式參數產生輸出;

  佔位符:%d:十進制有符號整數    %s:字符串

  參數列表與佔位符一一對應

  代碼: 

<?php $name="歐陽華夏"; $age=18; printf("個人名字是:%s,我今年%d歲了!",$name,$age); //輸出結果:個人名字是:歐陽華夏,我今年18歲了!
?>

 3.3.7 查找字符串中某些字符首次出現的位置

   strpos(目標字符串,要查找的子字符串); 查找子字符串在目標字符串中首次出現的位置,從左側開始查找,下標從0開始;

   strrpos(目標字符串,要查找的子字符串); 從右側開始查找,查找子字符串在目標字符串中首次出現的位置,下標從0開始;

3.3.8 截取子字符串函數

   substr(目標字符串,起始下標[,截取的長度]); 截取指定位置開始的子字符串,省略第三個參數,直接截取到末尾;

   strchr(目標字符串,截取的起始子字符串);  從左側,自字符串出現的位置截取到末尾;

   strrchr(目標字符串,截取的起始子字符串); 從右側,自字符串出現的位置截取到末尾;

3.3.9 字符串的分割

   explode(分隔符,目標字符串); 將目標字符串根據分隔符分割,返回子字符串組成的數組;

      str_split($str[,子字符串的長度=1]);  將字符串分紅指定長度(默認爲1字節)的子字字符串。返回數組;

3.3.10 數組轉爲字符串

   implode(鏈接的字符,數組);  將數組的元素使用鏈接字符串拼接成新的字符串;

 

3.4 日期和時間管理 

3.4.1 UNIX時間戳

  PHP中提供了UNIX時間戳用以解決時間運算的問題。UNIX時間戳是一種時間表示方式,定義爲從格林威治時間1970年01月01日00時00分00秒起至如今的總秒數。

3.4.2 經常使用的日期函數

  一、time()

  返回自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數,即時間戳。10位整型數字。一般用於保存文章的發佈時間、商品的發佈時間等。

  二、date()

  時間戳爲整型數字,沒法之間使用,須要先使用的date函數格式化時間戳。

   string date ( string $format [, int $timestamp ] ) 

  返回將整數 timestamp 按照給定的格式字串而產生的字符串。若是沒有給出時間戳則使用本地當前時間。換句話說,timestamp 是可選的,默認值爲 time()。

  最經常使用的格式爲:Y-m-d H:i:s    2017-09-13 02:13:14),經常使用來生成文件名(’Ymd-His’)

   三、strtotime()

  將時間字符串轉換爲時間戳。

3.5 數學函數

  • max(),min()--分別返回一組數的最大值及最小值
  • abs()--返回絕對值
  • floor()--向下取整
  • ceil()--向上取整
  • round()--四捨五入
  • rand() 和 mt_rand()--返回隨機數,能夠取到兩端的值。mt_rand生成的速度比rand快四倍多
相關文章
相關標籤/搜索