亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

PHP常用函數(shù)篇

Airmusic / 2712人閱讀

摘要:函數(shù)的結(jié)構(gòu)分析定義函數(shù)代碼段調(diào)用函數(shù)函數(shù)的命名規(guī)則函數(shù)的命名規(guī)范和變量名的命名規(guī)范相同。這種函數(shù)稱為遞歸函數(shù)。遞歸函數(shù)是考慮將引用作為參數(shù),成為一個(gè)橋梁,形成兩個(gè)函數(shù)間的數(shù)據(jù)共享。因而將應(yīng)用到遞歸函數(shù)作用可想而知。

PHP常用函數(shù)篇 1.為什么要使用函數(shù)?
除了內(nèi)建的PHP函數(shù),我們可以創(chuàng)建我們自己的函數(shù)。
函數(shù)是可以在程序中重復(fù)使用的語(yǔ)句塊。
使代碼邏輯更清晰
避免過(guò)多的全局變量
封裝后避免相同邏輯重復(fù)代碼,只需調(diào)用寫好的函數(shù)即可
便于維護(hù),僅需修改函數(shù)邏輯即可完成所有調(diào)用該函數(shù)的邏輯修改,不需要多處修改
頁(yè)面加載時(shí)函數(shù)不會(huì)立即執(zhí)行。
函數(shù)只有在被調(diào)用時(shí)才會(huì)執(zhí)行。
2.函數(shù)的結(jié)構(gòu)分析
//定義函數(shù)
function aa (){
    //代碼段
}
//調(diào)用函數(shù)
aa();
3.函數(shù)的命名規(guī)則
函數(shù)的命名規(guī)范和變量名的命名規(guī)范相同。通常函數(shù)都是執(zhí)行一個(gè)動(dòng)作的,因此函數(shù)命名時(shí),一般函數(shù)中會(huì)包含動(dòng)詞
這是一個(gè)簡(jiǎn)單的命名示例
function aa(){
    echo "this is function name aa";
}
aa();
4.函數(shù)的返回值
用return實(shí)現(xiàn)返回
function fan($height,$width){
    $area=$height*$width;                    
    return $area;                            
}
$total=fan(4,3);                
echo $total  ;
//結(jié)果12,因?yàn)?*4=12
5.函數(shù)的形參與實(shí)參 什么是形參,什么是實(shí)參
形參是指function后面小括號(hào)里面的參數(shù)。
實(shí)參是指調(diào)用function函數(shù)的時(shí)候?qū)懙膮?shù).
function abc($a) //這個(gè)$a是形參
{
 $a++;
 echo $a;
}
$a=2;
abc($a); //這個(gè)$a是實(shí)參 輸出:3
echo $a;  //輸出:2 因?yàn)閭鬟M(jìn)abc里的是它的一副本 要想在函數(shù)內(nèi)改變?cè)撝?,可以用引用傳遞
6.函數(shù)的默認(rèn)值
在php編程中,為自定義函數(shù)設(shè)定默認(rèn)值,當(dāng)用戶調(diào)用該函數(shù)時(shí),如果不給參數(shù)指定值,參數(shù)會(huì)用默認(rèn)值頂替。
function printMe($param = NULL)
{
   print $param;
}
printMe("This is morenzhi function ");
printMe();

//This is morenzhi function
7.函數(shù)的強(qiáng)類型參數(shù)
function sum($a,$b)
{
        return $a+$b;
}
var_dump(sum(1,2));
var_dump(sum(1,2.5));
//int(3) float(3.5)
8.函數(shù)的可變參數(shù)列表
必須在5.6以上版本才可以運(yùn)行
function sum(...$numbers)
{
    $acc = 0;
    foreach( $numbers as $number )
    {
        $acc += $number;
    }
    return $acc;
}

echo sum(1,2,3,4);

//輸出
//10
9.函數(shù)值傳遞與引用傳遞 區(qū)別
(1)按值傳遞:函數(shù)范圍內(nèi)對(duì)值的任何改變?cè)诤瘮?shù)外部都會(huì)被忽略
(2)按引用傳遞:函數(shù)范圍內(nèi)對(duì)值的任何改變?cè)诤瘮?shù)外部也能反映出這些修改
(3)優(yōu)缺點(diǎn):
A:按值傳遞時(shí),php必須復(fù)制值。特別是對(duì)于大型的字符串和對(duì)象來(lái)說(shuō),這將會(huì)是一個(gè)代價(jià)很大的操作。
B.按引用傳遞則不需要復(fù)制值,對(duì)于性能提高很有好處。
header("content-type:text/html;charset=utf-8");
$hero = array("no1"=>"蝙蝠俠", "no2"=>"超人");

     $hero2 = &$hero;
     $hero2["no1"] = "蜘蛛俠";
     echo "
";
     var_dump($hero);
     var_dump($hero2);
 
 
     $a = null;
     $b = &$a;
     $b = "abc";
 
     var_dump($a, $b);

     //結(jié)果
   /*   array(2) {
        ["no1"]=>
        string(9) "蜘蛛俠"
        ["no2"]=>
        string(6) "超人"
      }
      array(2) {
        ["no1"]=>
        string(9) "蜘蛛俠"
        ["no2"]=>
        string(6) "超人"
      }
      string(3) "abc"
      string(3) "abc" */
10.函數(shù)變量作用域
在所有函數(shù)外定義的變量擁有全局作用域,在函數(shù)內(nèi)部聲明的變量是局部變量,僅能在函數(shù)內(nèi)部訪問(wèn)。要在一個(gè)函數(shù)中使用全局變量,需要使用global關(guān)鍵字。
//使用global關(guān)鍵字  

11.復(fù)雜函數(shù)-可變函數(shù)
如果一個(gè)變量名后面有括號(hào),PHP將尋找與該變量值同名的函數(shù),并且嘗試執(zhí)行它。PHP"可變函數(shù)"可以用來(lái)實(shí)現(xiàn)包括回調(diào)函數(shù)、函數(shù)表在內(nèi)的一些用途。
”可變函數(shù)“不能用于語(yǔ)言結(jié)構(gòu),如echo(),print(),unset(),isset(),empty(),include(),require()等,需要使用自定義的包裝函數(shù)來(lái)將這些結(jié)構(gòu)用作可變函數(shù)。
function echoString($str){

      echo($str);

  }

 $varFun="echoString";

 $varFun=("Output String");//輸出"Output String"
12.復(fù)雜函數(shù)-嵌套函數(shù)
嵌套函數(shù),是一種有條件全局,你可以控制,在什么情況下提供這樣的全局函數(shù)給用戶使用。但也需要注意,過(guò)多的全局函數(shù)則會(huì)產(chǎn)生“全局污染”,所以,不可多用
function foo()
{
    function bar()
    {
    echo "this is qiantao function";
    }
}

/* 現(xiàn)在還不能調(diào)用bar()函數(shù),因?yàn)樗€不存在 */

foo();//結(jié)果空

/* 現(xiàn)在可以調(diào)用bar()函數(shù)了,因?yàn)閒oo()函數(shù)
的執(zhí)行使得bar()函數(shù)變?yōu)橐讯x的函數(shù) */

bar();//結(jié)果this is qiantao function
13.復(fù)雜函數(shù)-遞歸函數(shù) ++ -- 什么是遞歸函數(shù)? 一個(gè)函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身稱為遞歸調(diào)用。 這種函數(shù)稱為遞歸函數(shù)。 php 遞歸函數(shù)的三種實(shí)現(xiàn)方式 利用引用做參數(shù)
函數(shù)之間本來(lái)也是各行其是,即便是同名函數(shù)。遞歸函數(shù)是考慮將引用作為參數(shù),成為一個(gè)橋梁,形成兩個(gè)函數(shù)間的數(shù)據(jù)共享。雖然兩個(gè)函數(shù)見貌似操作的是不同地址,但是實(shí)際上操作的是一塊兒內(nèi)存地址。
function test($a=0,&$result=array()){
    $a++;
    if ($a<10) {
        $result[]=$a;
        test($a,$result);
    }
    echo $a;
    return $result;

}
本例比較有意思的是echo
a的值。相信很多人認(rèn)為是12345678910吧,其實(shí)不然,是1098765432。為什么呢?因?yàn)楹瘮?shù)還沒(méi)執(zhí)行echo, a前就進(jìn)行了下一次的函數(shù)遞歸。真正執(zhí)行echo 是當(dāng)a是當(dāng)a<10條件不滿足的時(shí)候,echo 返回a,返回result,對(duì)于上一層而言,執(zhí)行完遞歸函數(shù),開始執(zhí)行本層的echo $a,依次類推。
利用全局變量
利用全局變量完成遞歸函數(shù),請(qǐng)確保你確實(shí)理解什么是全局變量。global在函數(shù)內(nèi)申明變量不過(guò)是外部變量的同名引用。變量的作用范圍仍然在本函數(shù)范圍內(nèi)。改變這些變量的值,外部同名變量的值自然也改變了。但一旦用了&,同名變量不再是同名引用。利用全局變量實(shí)現(xiàn)遞歸函數(shù)沒(méi)必要理解到這么深的一層,還保持原有對(duì)全局變量的看法就可以順理成章理解遞歸函數(shù)。
function test1($a=0,$result=array()){
    global $result;
    $a++;
    if ($a<10) {
      $result[]=$a;
      test1($a,$result);
    }
    return $result;
  }
利用靜態(tài)變量
我們常常在類中見到static,今天我們把它利用到遞歸函數(shù)中。請(qǐng)記住static的作用:僅在第一次調(diào)用函數(shù)的時(shí)候?qū)ψ兞窟M(jìn)行初始化,并且保留變量值。
function test(){
    static $count=0;
    echo $count;
    
    $count++;
}
test();
test();
test();
test();
test();
請(qǐng)問(wèn)這一段代碼的執(zhí)行結(jié)果是多少?是00000么?必然不是。是01234。首先第一次調(diào)用test(),static對(duì) $count 進(jìn)行初始化,其后每一次執(zhí)行完都會(huì)保留 $count 的值,不再進(jìn)行初始化,相當(dāng)于直接忽略了 static $count=0; 這一句。
因而將static應(yīng)用到遞歸函數(shù)作用可想而知。在將需要作為遞歸函數(shù)間作為“橋梁"的變量利用static進(jìn)行初始化,每一次遞歸都會(huì)保留"橋梁變量"的值。
function test3($a=0){
    static $result=array();
    $a++;
    if ($a<10) {
        $result[]=$a;
        test3($a);
    }
    return $result;
}
總結(jié)
所謂遞歸函數(shù),重點(diǎn)是如何處理函數(shù)調(diào)用自身是如何保證所需要的結(jié)果得以在函數(shù)間合理"傳遞",當(dāng)然也有不需要函數(shù)之間傳值得遞歸函數(shù)
14.復(fù)雜函數(shù)-匿名(閉包)函數(shù) 匿名函數(shù)
提到閉包就不得不想起匿名函數(shù),也叫閉包函數(shù)(closures),貌似PHP閉包實(shí)現(xiàn)主要就是靠它。聲明一個(gè)匿名函數(shù)是這樣
$func = function() {
    
};//帶結(jié)束符
可以看到,匿名函數(shù)因?yàn)闆](méi)有名字,如果要使用它,需要將其返回給一個(gè)變量。匿名函數(shù)也像普通函數(shù)一樣可以聲明參數(shù),調(diào)用方法也相同:
$func = function( $niming ) {
    echo $niming;
};

$func( "this is niming function" );

//輸出:
//this is niming function
實(shí)現(xiàn)閉包
將匿名函數(shù)在普通函數(shù)中當(dāng)做參數(shù)傳入,也可以被返回。這就實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的閉包。
下邊有三個(gè)例子。
//例一
//在函數(shù)里定義一個(gè)匿名函數(shù),并且調(diào)用它
function bibao() {
    $func = function( $str ) {
        echo $str;
    };
    $func( "tihs is bibao" );
}

bibao();
//輸出
//tihs is bibao
//例二
//在函數(shù)中把匿名函數(shù)返回,并且調(diào)用它
function getPrintStrFunc() {
    $func = function( $str ) {
        echo $str;
    };
    return $func;
}

$printStrFunc = getPrintStrFunc();
$printStrFunc( "this is niming function fanhui" );

//輸出
//this is niming function fanhui
//例三
//把匿名函數(shù)當(dāng)做參數(shù)傳遞,并且調(diào)用它
function callFunc( $func ) {
    $func( "this is niming function canshu chuandi" );
}

$printStrFunc = function( $str ) {
    echo $str;
};
callFunc( $printStrFunc );
//輸出
//this is niming function canshu chuandi

//也可以直接將匿名函數(shù)進(jìn)行傳遞。如果你了解js,這種寫法可能會(huì)很熟悉
callFunc( function( $str ) {
    echo $str;
} );
//輸出
//this is niming function canshu chuandi
連接閉包和外界變量的關(guān)鍵字:USE
閉包可以保存所在代碼塊上下文的一些變量和值。PHP在默認(rèn)情況下,匿名函數(shù)不能調(diào)用所在代碼塊的上下文變量,而需要通過(guò)使用use關(guān)鍵字。
有人可能會(huì)想到,是否可以在匿名函數(shù)中改變上下文的變量,但我發(fā)現(xiàn)是不可以的:
function getMoney() {
    $rmb = 1;
    $func = function() use ( $rmb ) {
        echo $rmb;
        //把$rmb的值加1
        $rmb++;
    };
    $func();
    echo $rmb;
}

getMoney();

//輸出:
//1
//1
原來(lái)use所引用的也只不過(guò)是變量的一個(gè)副本而已。但是我想要完全引用變量,而不是復(fù)制。
要達(dá)到這種效果,其實(shí)在變量前加一個(gè) & 符號(hào)就可以了:
function getMoney() {
    $rmb = 1;
    $func = function() use ( &$rmb ) {
        echo $rmb;
        //把$rmb的值加1
        $rmb++;
    };
    $func();
    echo $rmb;
}

getMoney();

//輸出:
//1
//2
這些就是PHP的常用函數(shù),對(duì)于PHP函數(shù)來(lái)說(shuō),只要把這幾個(gè)了解透徹,開發(fā)一定沒(méi)有什么問(wèn)題。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/26003.html

相關(guān)文章

  • PHP常用函數(shù)TOP100(翻譯)

    摘要:原作者分析了多個(gè)項(xiàng)目對(duì)函數(shù)的使用情況得到如下結(jié)果,當(dāng)然有可能你最常用的不在這個(gè)列表,北哥建議初學(xué)者對(duì)這些函數(shù)一一仔細(xì)研究。分析最常用的函數(shù)是字符串函數(shù),然后是數(shù)組,然后是文件。以上個(gè)函數(shù)沒(méi)有近期要丟棄的計(jì)劃。數(shù)據(jù)庫(kù)操作也不納入此排名。 這是一篇外文,翻譯給大家。原作者分析了1900多個(gè)項(xiàng)目對(duì)php函數(shù)的使用情況得到如下結(jié)果,當(dāng)然有可能你最常用的不在這個(gè)列表,北哥建議PHP初學(xué)者對(duì)這些函...

    _ipo 評(píng)論0 收藏0
  • [yii2小心肝兒]GridView - 大衣

    摘要:最終版編號(hào)生成時(shí)間用戶名性別省市搞定,在運(yùn)行程序,表頭改成編號(hào)用戶名生成時(shí)間等,不要英文這個(gè)問(wèn)題搞定了。是代表對(duì)進(jìn)行什么樣的格式化,默認(rèn)來(lái)對(duì)其處理。分鐘后,我郁悶的回來(lái)了,知道這回客戶提了那些亂七八糟的需求么且聽下回分解睡衣篇 增刪改查,數(shù)據(jù)庫(kù)操作的四大法寶中最常用的就是查了,一條記錄、幾條記錄、一大堆記錄。對(duì)于yii2而言,尤其后臺(tái),GridView是最常用且好用的數(shù)據(jù)列表部件,今天...

    skinner 評(píng)論0 收藏0
  • TP5學(xué)習(xí)記錄(Controller

    摘要:可以在入口文件中定義,然后新建文件夾,達(dá)到將應(yīng)用配置放到該文件的目的,這樣方便將配置進(jìn)行統(tǒng)一管理。動(dòng)態(tài)配置返回?cái)?shù)據(jù)類型功能同上張三男請(qǐng)求成功 ThinkPHP5 ThinkPHP是一個(gè)免費(fèi)開源的、快速簡(jiǎn)單的、面向?qū)ο蟮?、輕量級(jí)PHP開發(fā)框架。 為什么選擇ThinkPHP5? ThinkPHP5采用了全新的架構(gòu)思想; 優(yōu)化了核心是一個(gè)顛覆性的版本; 支持composer方式安裝; 對(duì)...

    leone 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<