程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP在函數體中傳遞與接收參數

PHP在函數體中傳遞與接收參數

編輯:關於PHP編程

在PHP的函數中,參數傳遞可以分為值傳遞和引用傳遞(也稱為地址傳遞)兩種。

默認情況下,PHP是按值傳遞參數的。值傳遞參數調用函數時將常量或變量的值(通常稱其為實參)傳遞給函數的參數(通常稱為形參)。值傳遞的特點是實參與行參分別存儲在內存中,是兩個不相關的獨立變量。因此,在函數內部改變形參的值時,實參的值一般是不會改變的。

 引用傳遞(按地址傳遞)的特點是實參與行參共享一塊內存。因此,當形參的值改變的時候,實參的值也會相應的做出改變。從這種角度上說,可以認為形參合實參是同一個變量。

 定義引用傳遞參數時,可以在參數前面加上引用符號&。

<?php
function printString(&$string){
	echo($string);
	$string="打印完成";
}

$str="測試字符!n";
printString($str);
echo($str);
?>

// 程序輸出:測試字符! 打印完成

php還支持可變長度的參數列表。在定義函數時,不指定參數。在調用函數時,可以根據需要指定參數的數量,通過與參數相關的幾個系統函數獲取參數信息。具體說明為:

<?php
	function mysum()
	{
		$num = func_num_args();
		echo("函數包含:".$num."個參數n");
		$sum = 0;
		
		for($i=0; $i < $num; $i++)
		{
			$sum = $sum + func_get_arg($i);
		}
		echo("參數累加紙盒為:".$sum);
	}
	
	mysum(1,2,3,4);
?>

// 程序輸出:函數包含:4個參數 參數累加紙盒為:10

func_num_args函數功能:返回傳遞到函數的參數數目,其語法如下 : int func_num_args (void )。說明 : 返回傳遞到目前定義函數的參數數目。如果是從函數定義的外面來呼叫此函數,則func_get_arg( )將會產生警告。

func_num_args( )可以用來結合func_get_arg( )和func_get_args( )來允許使用者定義的函式接受variable-length參數列表。其中,func_get_arg( )從參數列表返回項目,其語法:int func_get_arg (int arg_num),傳回定義函數的參數列表的第arg_num個參數,其參數從0開始。且函數定義的外面來呼叫此函數會產生警告;並且當arg_num大於函數實際傳遞的參數數目時亦會產生警告並返回FALSE。

func_get_args()函數和func_get_arg()函數的區別在於,func_get_args()函數傳回一數組,數組的各個元素相當於是目前使用者定義函式的參數列的數目。

在我們構建PHP類的時候,靈活使用這三個函數,可以起到非常理想的效果,例如外面在創建PHP和MYSQL鏈接的類時,可以書寫如下代碼:

<?php
class mydb {
	private $user;
	private $pass;
	private $host;
	private $db;
	
	public function __construct(){
		$num_args=func_num_args();
		if($num_args>0){
			$args=func_get_args();
			$this->host=$args[0];
			$this->user=$args[1];
			$this->pass=$args[2];
			$this->connect();
		}
	}
}
?>

再給出一個示例程序:

<?php
function foo() {
	$numargs = func_num_args();
	echo "Number of arguments: $numargs<br>n";
	if ($numargs >= 2) {
		echo "Second argument is: " . func_get_arg (1) . "<br>n";
	}
	$arg_list = func_get_args();
	for ($i = 0; $i < $numargs; $i++) {
		echo "Argument $i is: " . $arg_list[$i] . "<br>n";
	}
}
foo (1, 2, 3);
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved