亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

前端學PHP之函數

2020-03-22 19:57:09
字體:
來源:轉載
供稿:網友

  • 前面的話

      PHP 的真正力量來自它的函數:它擁有超過 1000 個內建的函數。本文將詳細介紹php函數

      [注意]關于javascript函數的詳細內容移步至此

    函數定義

      除了內建的 PHP 函數,可以創建我們自己的函數。函數是可以在程序中重復使用的語句塊。頁面加載時函數不會立即執行。函數只有在被調用時才會執行。

      用戶定義的函數聲明以關鍵字 'function' 開頭,函數名和 PHP 中的其它標識符命名規則相同。有效的函數名以字母或下劃線打頭,后面跟字母,數字或下劃線

    function functionName() {  被執行的代碼;}
    <?phpfunction writeMsg() {  echo 'Hello world!';}writeMsg(); // 調用函數?>

    函數參數

      可以通過參數向函數傳遞信息,參數類似變量。參數被定義在函數名之后,括號內部。可以添加任意多參數,只要用逗號隔開即可

    <?phpfunction familyName($fname) {  echo '$fname Zhang.<br>';}familyName('Li');familyName('Hong');familyName('Tao');familyName('Xiao Mei');familyName('Jian');?>

    引用傳遞

      默認情況下,函數參數通過值傳遞。如果希望允許函數修改它的參數值,必須通過引用傳遞參數

      如果想要函數的一個參數總是通過引用傳遞,可以在函數定義中該參數的前面加上符號 &

    <?phpfunction add_some_extra(&$string){    $string .= 'and something extra.';}$str = 'This is a string, ';add_some_extra($str);echo $str;    // outputs 'This is a string, and something extra.'?>

    默認參數

      函數可以定義 C++ 風格的標量參數默認值

    <?phpfunction setHeight($minheight=50) {  echo 'The height is : $minheight <br>';}setHeight(350);setHeight(); // 將使用默認值 50setHeight(135);setHeight(80);?>

      PHP 還允許使用數組 array 和特殊類型 NULL 作為默認參數

    <?phpfunction makecoffee($types = array('cappuccino'), $coffeeMaker = NULL){    $device = is_null($coffeeMaker) ? 'hands' : $coffeeMaker;    return 'Making a cup of '.join(', ', $types).' with $device.';}echo makecoffee();echo makecoffee(array('cappuccino', 'lavazza'), 'teapot');?>

      [注意]當使用默認參數時,任何默認參數必須放在任何非默認參數的右側;否則,函數將不會按照預期的情況工作

    可變參數

    【func_get_args()】

      func_get_args()相當于javascript函數中的arguments,以數組形式保存著實參

    function demo(){    $arr = func_get_args();    $sum = 0;    for($i = 0; $i<count($arr); $i++){        $sum += $arr[$i];    }    return $sum;}//45echo demo(1,2,3,4,5,6,7,8,9);

      此外,還有兩個常用的函數func_num_args()和func_get_arg()

      func_num_args()函數返回參數總數

      func_get_arg()函數接收一個數字參數,返回指定參數

    function more_args() {               for($i=0; $i<func_num_args(); $i++) {         echo '第'.$i.'個參數是'.func_get_arg($i).'<br>';    }}more_args('one', 'two', 'three', 1, 2, 3); 

    返回值

      如需使函數返回值,使用 return 語句。如果省略了return,則返回值為 NULL

    <?phpfunction sum($x,$y) {  $z=$x+$y;  return $z;}echo '5 + 10 = ' . sum(5,10) . '<br>';echo '7 + 13 = ' . sum(7,13) . '<br>';echo '2 + 4 = ' . sum(2,4);?>

    變量函數

      變量函數也叫可變函數。如果一個變量名后有圓括號,PHP 將尋找與變量的值同名的函數,并且嘗試執行它??勺兒瘮悼梢杂脕韺崿F包括回調函數,函數表在內的一些用途

      [注意]可變函數不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及類似的語言結構。需要使用自己的包裝函數來將這些結構用作可變函數

    <?phpfunction foo() {    echo 'In foo()<br />';}function bar($arg = '') {    echo 'In bar(); argument was '$arg'.<br />';}// 使用 echo 的包裝函數function echoit($string){    echo $string;}$func = 'foo';$func();        // This calls foo()$func = 'bar';$func('test');  // This calls bar()$func = 'echoit';$func('test');  // This calls echoit()?>

    回調函數

      回調函數是指將一個函數的函數名作為參數傳到另一個函數中,這個函數被稱為回調函數

    function demo($num,$n){    for($i=0;$i<$num;$i++){        if($n($i)){            echo $i.'<br>';        }    }}function test($i){    if($i%5){        return true;    }}demo(20,'test');

    call_user_func_array

      使用call_user_func_array可以調用回調函數,并把一個數組參數作為回調函數的參數

    mixed call_user_func_array ( callable $callback , array $param_arr )

      把第一個參數作為回調函數(callback)調用,把參數數組作(param_arr)為回調函數的的參數傳入

    function demo($num,$n){    for($i=0;$i<$num;$i++){        if(call_user_func_array($n,array($i))){            echo $i.'<br>';        }    }}function test($i){    if($i%5){        return true;    }}demo(20,'test');

      實現回調函數時,通常要使用call_user_func_array()函數,而不是變量函數,因為變量函數無法傳遞對象中的方法或和類中的靜態方法

    function demo($num, $n) {    for($i=0; $i<$num; $i++) {        if(call_user_func_array($n, array($i))){            echo $i.'<br>';        }        }}    html' target='_blank'>class Filter {    function one($i) {        if($i%3==0) {            return true;        }    }    static function two($i) {        if(preg_match('/3/', $i)) {            return true;        }    }}demo(500, array(new Filter(), 'one'));demo(500, array('Filter', 'two'));

    遞歸函數

      在函數中調用自己就是遞歸函數

    <?php    function test( $n ) {                    echo $n;         if($n>0){            test($n-1);                           }           echo $n;     }    test(5);//543210012345?>

    加載函數庫

      使用include()函數來引入外部文件

    test.phpfunction one(){    echo '111';}<?phpinclude ('test.php');one();//111?>

      但如果不慎引入多次,使得函數重定義,變量重新賦值,會造成錯誤

    test.phpfunction one(){    echo '111';}<?phpinclude ('test.php');include ('test.php');one();//111?>

      此時,需要使用include_once()函數,來保證相同的文件只被引入一次

    test.phpfunction one(){    echo '111';}<?phpinclude_once('test.php');include_once('test.php');one();//111?>

    require()

      引入外部文件,還可以使用require()。include( )與require( )幾乎等價,區別在于在腳本執行時包含,當處理失敗時,include( )產生一個警告而require( )則導致一個致命錯誤

      [注意]require_once()與include()_once也類似

    匿名函數

      匿名函數(Anonymous functions),也叫閉包函數(closures),允許 臨時創建一個沒有指定名稱的函數。最經常用作回調函數(callback)參數的值

      其實,php的匿名函數類似于javascript中的函數表達式

      [注意]匿名函數結尾一定要加分號,否則會報錯

    <?php$greet = function($name){    printf('Hello %s', $name);};$greet('World');$greet('PHP');?>

    閉包

      PHP閉包實現主要就是靠匿名函數

      將匿名函數在普通函數中當做參數傳入,也可以被返回。這就實現了一個簡單的閉包。

      閉包的兩個特點:

      1、作為一個函數變量的一個引用 - 當函數返回時,其處于激活狀態。

      2、一個閉包就是當一個函數返回時,一個沒有釋放資源的棧區。

      其實上面兩點可以合成一點,就是閉包函數返回時,該函數內部變量處于激活狀態,函數所在棧區依然保留

      閉包可以從父作用域中繼承變量。 任何此類變量都應該用 use 語言結構傳遞進去

    $message = 'hello';$example = function () use ($message) {    var_dump($message);};echo $example();//string 'hello' (length=5)
    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    欧美激情在线播放| 国内精品久久久久久久久| 最近2019中文字幕mv免费看| 91精品国产91久久| 亚洲女人被黑人巨大进入al| 久久久女女女女999久久| 一区二区成人av| 亚洲精品视频网上网址在线观看| 成人写真福利网| 亚洲一区中文字幕| 中文在线不卡视频| 国产成人黄色av| 隔壁老王国产在线精品| 久久久久久一区二区三区| 播播国产欧美激情| 日韩精品亚洲元码| 性欧美视频videos6一9| 亚洲黄在线观看| 日韩在线观看高清| 福利微拍一区二区| 日本欧美爱爱爱| 精品视频在线导航| 久久精品国产欧美亚洲人人爽| 伦伦影院午夜日韩欧美限制| 亚洲最大福利网| 清纯唯美亚洲激情| 精品国产依人香蕉在线精品| 亚洲久久久久久久久久| 亚洲精品国产综合区久久久久久久| 亚洲丁香婷深爱综合| 欧美成人精品影院| 欧美怡红院视频一区二区三区| 狠狠久久亚洲欧美专区| 亚洲人精品午夜在线观看| 欧美老女人bb| 日韩人体视频一二区| 色久欧美在线视频观看| 欧美午夜激情视频| 欧美视频裸体精品| 中文字幕在线国产精品| 国产亚洲美女精品久久久| 亚洲第五色综合网| 亚洲精品自拍偷拍| 伊人久久大香线蕉av一区二区| 永久免费看mv网站入口亚洲| 成人有码视频在线播放| 久久在线精品视频| 久久久国产精彩视频美女艺术照福利| 日韩在线播放视频| 在线观看精品自拍私拍| 欧美大肥婆大肥bbbbb| 欧美日韩亚洲视频一区| 中文字幕日韩av综合精品| 国产伦精品一区二区三区精品视频| 伊人av综合网| 日韩成人免费视频| 国模吧一区二区| 亚洲黄色成人网| 久久久精品免费视频| 欧美日韩日本国产| 国产一区二区三区久久精品| 国产成人精品在线| 国产精品久久久久7777婷婷| 两个人的视频www国产精品| 51精品国产黑色丝袜高跟鞋| 亚洲天堂av女优| 国产成人福利视频| 国产精品电影久久久久电影网| 国产精品一区=区| 久久久久久久久久久久av| 高清欧美性猛交xxxx黑人猛交| 亚洲欧美变态国产另类| 国产成+人+综合+亚洲欧洲| 欧美日韩在线观看视频小说| 午夜免费日韩视频| 精品成人久久av| 2019中文字幕全在线观看| 欧美性高潮在线| 久久精品成人动漫| 亚洲免费一在线| 91在线观看免费网站| 国产一区玩具在线观看| 精品美女永久免费视频| 欧美老少配视频| 国产精品久久综合av爱欲tv| 九九热99久久久国产盗摄| 国产成人一区二区三区| 亚洲天堂色网站| 国产噜噜噜噜噜久久久久久久久| 欧美中文字幕在线观看| 国内揄拍国内精品少妇国语| 精品国内亚洲在观看18黄| 亚洲精品乱码久久久久久按摩观| 亚洲一区二区三区乱码aⅴ蜜桃女| 成人性生交xxxxx网站| 欧美成人sm免费视频| 美女扒开尿口让男人操亚洲视频网站| 欧美理论电影在线播放| 亚洲一区av在线播放| 久久久久国产精品一区| 这里只有精品在线播放| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品久久久久久影视| 亚洲精品自拍视频| 久久久亚洲福利精品午夜| 美日韩丰满少妇在线观看| 国产精品电影在线观看| 国产精品欧美激情在线播放| 宅男66日本亚洲欧美视频| 国产91热爆ts人妖在线| 国产精品第一第二| 美女999久久久精品视频| 欧美精品18videos性欧| 精品久久久久久久久久ntr影视| 国产人妖伪娘一区91| 中文字幕一精品亚洲无线一区| 国产精品网站视频| 日韩av网站导航| 欧美另类69精品久久久久9999| 国产一区二区三区高清在线观看| 在线免费观看羞羞视频一区二区| 在线观看91久久久久久| 国产91精品在线播放| 久久99精品国产99久久6尤物| 性欧美视频videos6一9| 亚洲成年人在线播放| 国产精品美女主播| 欧美在线视频观看免费网站| 欧美激情亚洲一区| 日韩一区在线视频| 日本国产精品视频| 久久精品成人一区二区三区| 国产成人精品一区二区在线| 午夜精品一区二区三区av| 午夜精品久久久久久久99热| 精品亚洲国产成av人片传媒| 精品亚洲aⅴ在线观看| 日韩免费中文字幕| 色久欧美在线视频观看| 亚洲欧洲国产精品| 欧美一区亚洲一区| 国产成人精品视频在线| 国产精品视频大全| 欧美一二三视频| 亚洲精品美女免费| 欧美日韩亚洲天堂| 亚洲аv电影天堂网| 国产精品一区久久| 欧美日韩综合视频| 国产精品吹潮在线观看| 中文字幕亚洲天堂| 成人免费直播live| 韩国三级电影久久久久久| 欧美性xxxxx极品娇小| 国产成人一区二区三区| 日韩电视剧免费观看网站| 色综合久久88色综合天天看泰| 日韩欧美亚洲成人| 欧美裸体xxxx极品少妇软件| 久久亚洲精品网站| 欧美激情2020午夜免费观看| 国产成人精品视频在线观看| 欧美激情国产日韩精品一区18| 少妇激情综合网|