笨鳥學php(五) 函數的聲明與使用

來源:互聯網
上載者:User

標籤:des   style   blog   java   使用   os   strong   資料   

1、函數的聲明

<?php/** * function 函數名(參數1, 參數2.... ){ *  函數體; *  傳回值; * } */$sum = sum(3, 4);echo $sum;function sum($x, $y){$sum = 0;$sum = $x * $x + $y + $y;return $sum;}?>

2、變數的範圍

局部變數: 在函數中聲明的變數就是局部變數, 只能在自己的函數內部使用
全域變數: 在函數外聲明的變數就是全域變數, 在變數聲明以後直到整個指令碼結束前都可以使用, 包括在函數中和 { } 中都可使用

2.1 知識點: PHP的變數分不出是聲明還是使用

<?php$a = 10;function demo($a){$a += 10;echo $a . '<br>';}demo($a);echo $a;// 結果: 20, 10// PHP的變數分不出 $a 是聲明還是使用?>
2.2 知識點: 函數中使用全域變數必須使用global關鍵字, 在聲明global之後的變數才是全域的變數

<?php$a = 10;function demo() {global $a;$a += 10;echo $a . " demo <br>";}function test() {global $a;$a += 5;echo $a . "test <br>";}echo $a . " ----<br>";  // 10 ----demo();                 // 20 demo echo $a . " !!!!<br>";  // 20 !!!!demo();                 // 30 demo echo $a . " @@@@<br>";  // 30 @@@@test();                 // 35 test echo $a . " ####<br>";  // 35 ####?>

靜態變數: 只能聲明在函數中(類中), 不能在全域聲明, 變數前使用static關鍵字修飾

2.3 知識點: 靜態變數在靜態代碼塊中儲存, 它的值可以一個函數多次調用之間共用, 但只在第一次調用函數時聲明到記憶體

以後再調用時就不再聲明而直接使用(和Java類似)。

<?php   function test(){   static $a = 0;   $a++;   echo $a."<br>";   }  test(); // 1  test(); // 2  test(); // 3?>

3、變數函數

其實這個和JS又很類似, 例如: 定義$var = hello, 下次使用$var()時就將尋找與變數值同名的函數hello()

<?php  function one($a, $b){  return $a + $b;  }  function two($a, $b){ return $a * $a + $b * $b;   }  function three($a, $b){  return $a * $a * $a + $b * $b * $b;  }  //$var = one;  //$var = "two";  $var = three;  echo "結果:".$var(3, 4)."<br>"; // 91?>

4、系統函數

4.1 常規函數  
     bool copy (string source, string dest)

4.2 帶有mixed, mixed表示可以傳任何類型的資料
      bool chown (string filename, mixed user)
       

4.3 帶有&參數的函數, 表示引用賦值, 這個參數不能傳值, 只能傳一個變數,然後函數將變數的值改變,

      我們在使用這個變數時,值也是變化的(和Java中傳引用又是一樣的)

      bool arsort (array &array [, int sort_flags])
<?php$arr=array(1, 9, 5, 8, 3, 4);sort($arr);print_r($arr);?>
4.4 預設函數, 帶有[]的函數, 表示這個參數是可選的,如果你傳值了就使用你傳的值,如果沒有傳值則使用預設值
     bool arsort (array &array [, int sort_flags])
<?phpfunction demo($a=1, $b=20, $c){echo "### $a ### $b ### $c ###<br>";}demo(8,9);?>
4.5 帶有...的參數函數, ...表示可以傳任意多個參數
      int array_unshift (array &array, mixed var [, mixed ...])

<?phpfunction demo(){  $sum = 0;  for($i = 0; $i < func_num_args(); $i++){    $sum += func_get_arg($i);  }  return $sum; } echo demo(1, 2, 3, 4, 5, 6, 7, 8, 9);?>

4.6 回呼函數 帶有callback,  就是調用這個函數時需要我們傳一個函數進來(函數名,函數名字串)
      array array_filter (array input [, callback callback])

<?php   function demo($n){   if($n % 2== 0){return true;   }else{return false;   }   }      $a = array(1, 2, -3, 4, -5, 6, -7, 8, 9);   print_r(array_filter($a, demo));  // Array ( [1] => 2 [3] => 4 [5] => 6 [7] => 8 ) ?>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.