2012-10-01 69 views
2

我敢肯定,必須有一個辦法做到這一點:通過PHP函數傳遞一個數組

我想它,這樣如果我把這樣的功能...

callFunction("var1","var2","var3"); 

功能「callFunction」將轉向這些變量到一個數組即:

$array[0] = "var1"; 
$array[1] = "var2"; 
$array[2] = "var3"; 

我希望它無論有多少個變量調用函數時列出生成這個數組,這可能嗎?

+8

['func_get_args()'](http://us.php.net/func_get_args)? – DCoder

+0

現在的問題是,是否以及如何將數組傳遞給函數,或者是否可以使用可變數量的參數調用函數? – Havelock

+1

你爲什麼不想使用'array'? – Baba

回答

8

您只需做到以下幾點:

function callFunction() { 
    $arr = func_get_args(); 
    // Do something with all the arguments 
    // e.g. $arr[0], ... 
} 

func_get_args將返回傳遞給函數的所有參數。你甚至不需要在函數頭中指定它們。

func_num_args將產生傳遞給該函數的參數的數量。我不完全確定爲什麼存在這樣的事情,因爲你可以簡單地使用count(func_get_args()),但我認爲它存在是因爲它在C中(它實際上是必要的)。

要是你再去找這種特徵在不同的語言,它通常被稱爲Variadic Function,或「可變參數」,如果你需要快速谷歌它:)

+0

現貨,非常感謝。 – George

+0

@George你需要添加'return $ arg;' – Baba

0

剛剛從該函數返回func_get_args()

function callFunction(){ 
    return func_get_args(); 
} 

$array = callFunction("var1","var2","var3","var4","var5"); 
var_dump($array); 

/*array(5) { 
    [0]=> 
    string(4) "var1" 
    [1]=> 
    string(4) "var2" 
    [2]=> 
    string(4) "var3" 
    [3]=> 
    string(4) "var4" 
    [4]=> 
    string(4) "var5" 
}*/ 
+0

剛剛返回'$ arg_list'有什麼問題? – slugonamission

0

這樣調用你的函數。

callFunction(array("var1", "var2", "var3", "var4", "var5")); 

並創建你的功能。

function callFunction($array) 
{ 
    //here you can acces your array. no matter how many variables are listed when calling the function. 
    print_r($array); 
}