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

1、函數的聲明


2、變量的范圍

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

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

<?php
	$a = 10;
	function demo($a){
		$a += 10;
		echo $a . '
'; } demo($a); echo $a; // 結果: 20, 10 // PHP的變量分不出 $a 是聲明還是使用 ?>

2.2 知識點: 函數中使用全局變量必須使用global關鍵字, 在聲明global之後的變量才是全局的變量

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

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

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

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

<?php
   function test(){
	   static $a = 0;
	   $a++;
	   echo $a."
"; } 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)."
"; // 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])


4.4 默認函數, 帶有[]的函數, 表示這個參數是可選的,如果你傳值瞭就使用你傳的值,如果沒有傳值則使用默認值
bool arsort (array &array [, int sort_flags])

<?php
	function demo($a=1, $b=20, $c){
		echo "### $a ### $b ### $c ###
"; } demo(8,9); ?>

4.5 帶有…的參數函數, …表示可以傳任意多個參數
int array_unshift (array &array, mixed var [, mixed …])

<?php
	function demo(){
		  $sum = 0;
		  for($i = 0; $i 

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

 2 [3] => 4 [5] => 6 [7] => 8 ) 
?>

發佈留言