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標記名;
注意事項:
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 數學函數