1. 程式人生 > >2018-1-25 函數方法

2018-1-25 函數方法

運算 blog new 傳值 返回 存在 問題: 方式 pos

  今天整理一下有關於php函數與方法的相關知識。

函數:定義形式:

function 函數名 (形參1,形參2.... )

{

//函數體(代碼塊)

}

函數調用:①沒有返回值的函數,調用語句是獨立語句

函數名(實參1,實參2, .... );   實參個數應該跟形參有匹配性。

②有返回值的函數,調用語句會“混雜”在別的語句中,並將該調用語句當作一個“數據”來使用:

A$v1 = 函數名();   賦值給其他變量;這裏省略實參語法,下同。

B$v1 = 函數名() * 3 + 6;   參與運算,然後再賦值;

Cecho 函數名();   直接輸出

Decho 函數名

() * 3 + 6;   參與運算,然後再輸出

E$v1 = 函數名2( 函數名() , 實參2,實參3.... );   當作實參使用

函數參數問題:形參與實參

形參:變量;只在該函數中有效;在函數中執行時有效,函數結束,變量“銷毀”。

實參:“實際數據”;作用是將自身數據“賦值給”形參變量

形參與實參應有“一一對應”關系。

定義形式: function 函數名(形參1,形參2...... ){ 。。。。}

調用形式:      函數名(實參1,實參2..... )    (一一對應)

默認值參數:function click(num=1){    (num=1就是默認值參數)

        代碼

      }

默認值只能是常量表達式,或常量,不能是變量。

函數傳值問題:

①默認都是值傳遞

②如果實參本身就是“直接數據”,則不存在傳值問題,而是簡單的“賦值”。

③讓某個參數(形參)以引用傳遞的方式來傳值:引用傳遞的形參(實參),在函數內部改變其值,在函數外面的實參,也會相應修改。

參數數量問題:

①通常,實際參數的數量應該跟形式參是的數量一致。

②如果形式參是中有默認值,則實際參數的對應項可以省略。即:實參的個數,至少應該不少於形參中的非默認值參數的個數。

三種系統函數:

func_get_args(); //獲得一個函數所接收到的所有實參數據,並結果是一個數組

func_get_arg(n); //獲得一個函數所接收到的第n個實參數據(n0開始)

func_num_args(); //獲得一個函數所接收到的所有實參數據的個數

函數返回值:通常是值傳遞。也可以引用傳遞,具體形式:

function &函數名(形參1,形參2.....)   註意函數名前有個引用符號&

{

$result = 0; //初始化。。。。。。

return $result;   此時返回數據,只能是變量

}

調用函數:

$v1 = &函數名(實參1,實參2....;   引用返回的函數,自然是指有返回值。

可變函數:

function f1(){

  echo "<br>函數f1被調用;";

}

$str1="f1";  

$str1();  調用可變函數(函數名此時是一個變量,內容是一個函數名)

匿名函數:未命名的函數

①$f1=function(){...函數體} 定義形式上沒有名字,其實將賦值給了變量$f1

②調用其他函數2(匿名函數,實參1,實參2......

【1】此形式的匿名函數只有定義的函數體(無函數名)

【2】此形式的匿名函數只能作為其他函數調用時的參數(其他函數通常有特定用處)

【3】此匿名函數會在調用其他函數的“過程中”被執行。

call_user_func_array(匿名函數,數組);

將數組的每一項當作該匿名函數的若幹個實參,傳遞到該匿名函數中,並執行該匿名函數,並可以從該匿名函數中返回數據。

echo"<hr>";

cal_user_func_array(

  function($m1,$m2,$m3){

    echo"<br>m1=$m1";

    echo"<br>m2=$m2";

    echo"<br>m3=$m3";

  }

  ,array(1,2,3)

);

echo<hr>;

$a1=aray(1,2,3,4,5,1);

$s=call_user_func_aray(

  function(){  可見這個匿名函數作用是求一個數組的“總和”

    $a=func_get_args();  取得傳遞過來的所有實參

    $sum=0;

    foreach($a as $v){

      $sum += $v:

    }

    return $sum;

  }

  ,$a1

);

echo "<br>和為:$s";

變量作用域:

局部作用域:只能在所定義的函數範圍內使用。

全局作用域:在函數的“外部”範圍使用。

php中,局部和全局作用域是不重疊的。

超全局:就是在函數的內部和外部都可以使用。

超全局變量系統定義,我們不能創建超全局變量。

靜態局部作用域:其實也是局部,但多一個特征:數據能夠在函數退出後仍然保持不丟失。

局部訪問全局變量:global $變量名

$v1=10;  全局

functon f3(){  局部

  golbal $v1;  訪問全局變量$v1

  echo"<br>v1=$v1";

  $v2=20;

}

f3();

全局訪問局部變量:

$v1 = 10;

function f1( &$p1, $p2){ ...... } //$p1是函數的形參,也即就是函數的內部(局部)變量

$v2 = f1( $v1, 10); //此時我們認為$v1就可以使用函數中$p1的值。

幾種有關函數的系統函數:

①function_exists():  判斷某個函數是否被定義過,返回布爾值

if( function_exists(“ func1 “) == false ){

function func1(){。。。。。。};  定義函數

}

②func_get_arg(n):獲得一個函數的第n個實參值(n從0開始)

③func_get_args():獲得一個函數的所有實參,結果是一個數組

④func_num_args():獲得一個函數的所有實參的個數。

2018-1-25 函數方法