for變形格式
for (表達式1; 表達式2; 表達式3) {
循環(huán)體
}
表達式1;
for (; 表達式2; 表達式3) {
循環(huán)體
}
【注】無論如何變形,兩個分號都不能省略
表達式1;
for(;表達式2;){
循環(huán)體
表達式3;
}
//這樣寫就和while(1)是一個意思,死循環(huán)。
【注】表達式2省略,代表恒為真
for (;;) {
循環(huán)體
}
goto(了解)(禁止使用)
goto是匯編語言遺留下來的很隨意的一個語法結構。
1、函數(shù)開篇
定義:在一個大的項目開發(fā)過程中,有些代碼會被反復的使用到,這個時候我們將這些代碼封裝起來,這個封裝起來的代碼塊就叫做函數(shù)。
優(yōu)點
1、提高代碼的利用率
2、提高代碼的可讀性
3、便于調(diào)試代碼
分類
庫函數(shù)
自定義函數(shù)
命名
命名和變量的命名一樣
函數(shù)名不區(qū)分大小寫(但是我們要區(qū)分大小寫)
函數(shù)名要有意義
遵從駝峰原則或者下劃線原則 my_func() myFunc()
2、函數(shù)基本語法
基本格式
/*
1、函數(shù)都要以function關鍵字開始
2、函數(shù)名使用英文,遵從規(guī)范
3、函數(shù)名后面緊跟著小括號,小括號里面是要寫形式參數(shù)的
4、小括號下面跟著大括號,大括號里面寫函數(shù)體
5、函數(shù)需要調(diào)用才會執(zhí)行
*/
function hello_baby()
{
//函數(shù)體:就是函數(shù)的里面的代碼,以前我們在外面怎么寫代碼的,在這里面我們依然這么寫
echo 'hello baby<br >';
}
/*
1、函數(shù)調(diào)用才會執(zhí)行
2、調(diào)用格式。函數(shù)名后面緊跟小括號。小括號是用來傳遞參數(shù)的,這里面?zhèn)鬟f的參數(shù)叫做實際參數(shù),如果沒有參數(shù),寫一個空的小括號即可
*/
hello_baby();
無參數(shù)無返回值
參數(shù)就是函數(shù)的輸入,返回值就是函數(shù)的輸出
有參數(shù)無返回值
/*
帶參數(shù)的寫法:
$num:形式參數(shù),相當于在該函數(shù)中定義了一個變量叫做$num,在寫函數(shù)體的時候,可以直接使用這個$num,因為在調(diào)用函數(shù)的時候已經(jīng)給他賦值了。
如果函數(shù)有多個參數(shù),中間以逗號隔開。理論上函數(shù)可以有無限個參數(shù),但是實際使用中一般不超過5個。
*/
echo '美女<br />';
//調(diào)用函數(shù)的時候相當于將實際參數(shù)的值賦值給形式參數(shù)。
$a = 10;
hello_baby($a);
echo '一起吃飯<br />';
有參數(shù)有返回值
有參數(shù),有返回值
1、return關鍵字,函數(shù)碰到return立馬結束
2、函數(shù)只能有一個返回值,如果要返回多個,返回一數(shù)組即可
3、函數(shù)的返回值就是return后面表達式的值
4、函數(shù)調(diào)用表達式的值就是函數(shù)的返回值
默認參數(shù)
//默認參數(shù)
/*
1、所謂默認參數(shù),就是在不傳遞實參的時候,形式參數(shù)使用其默認值,寫法是在形式參數(shù)后面寫=某某
2、如果傳遞了實參,那么按照實參來計算
3、如果函數(shù)的形參帶默認參數(shù),那么我們一般都將帶默認參數(shù)的形式參數(shù)寫到最后
*/
注意事項
函數(shù)以function開始
function后面接空格,空格后接函數(shù)名
函數(shù)名與變量命名規(guī)則基本一樣,但是不同的是:函數(shù)名不區(qū)分大小寫
函數(shù)名后接括號,括號內(nèi)跟參數(shù)(其實就是變量)
如果有參數(shù)的話,參數(shù)后可以接(=)等號,等號接默認值
函數(shù)后的參數(shù)變量,主要功能是把函數(shù)體外的變量值,傳入函數(shù)體內(nèi)來使用
函數(shù)體的變量(形參)和函數(shù)體外的變量(實參)通常是兩個不同的變量。
函數(shù)可以有返回值也可以沒有返回值,使用return關鍵字返回。
return后接空格,空格后接返回值,若執(zhí)行return,其 后的代碼均不執(zhí)行。
函數(shù)的定義與調(diào)用沒有順序關系,可以在定義處之前的位置調(diào)用
函數(shù)不能被定義兩次,即函數(shù)不能被重載
3、作用域
一個變量的作用范圍,或者叫做一個變量的生命周期
內(nèi)部變量
外部變量
內(nèi)部變量:就是在函數(shù)體內(nèi)的變量,內(nèi)部變量的作用域只在函數(shù)體內(nèi)有效,函數(shù)執(zhí)行完畢之后,內(nèi)部變量就會被銷毀掉
外部變量:外部變量就是在函數(shù)體外的變量,外部變量不能再函數(shù)體內(nèi)使用,內(nèi)部變量也不能在函數(shù)體外使用
內(nèi)部變量可以和外部變量同名,但是我們一般不這么做
超全局變量
/*
如果想在函數(shù)內(nèi)部使用外部變量
1、global $a; (不推薦使用)
相當于使用的就是外部的$a,所以函數(shù)里面修改了之后,外部也已經(jīng)被修改
2、使用超全局變量 (推薦使用這種方法)
$GLOBALS $_GET $_POST $_FILE $_COOKIE $_SESSION
*/
//global $a;
//$a = 300;
//將外部變量的值賦給一個內(nèi)部變量,內(nèi)部變量被修改之后,外部變量沒有被修改
//$a = $GLOBALS['anglebaby'];
//$a = 300;
//直接修改的就是外部變量
$GLOBALS['anglebaby'] = 300;
echo $GLOBALS['anglebaby'].'<br />';
靜態(tài)變量
/*
在程序開始之前,$a這個變量已經(jīng)存在,這個變量只會被初始化1次,再往后他會記錄上一次的值,函數(shù)調(diào)用結束之后,static變量不會被銷毀。
*/
static $a = 3;
4、內(nèi)部函數(shù)
基本使用
注意事項
function abc()
{
static $a = 0;
//def(); 在內(nèi)部函數(shù)定義之前不能使用
//if ($a == 0) {
//if (!function_exists('def')) {
if (!is_callable('def')) {
function def()
{
echo 'hello';
}
$a++;
}
def();
}
/*
1、有內(nèi)部函數(shù)的函數(shù),只能被調(diào)用1次。內(nèi)部函數(shù)是為包含他的函數(shù)使用的。如果被包含函數(shù)調(diào)用了一次,那么內(nèi)部函數(shù)就已經(jīng)被定義過了,就可以使用了。
2、內(nèi)部函數(shù)只能在定義之后使用,在定義之前不能使用該內(nèi)部函數(shù)。
3、如何解決abc這個函數(shù)只能調(diào)用1次呢?
1、使用靜態(tài)變量
2、使用判斷函數(shù)是否存在的函數(shù)
3、判斷函數(shù)是否可以被調(diào)用函數(shù)
*/