2014-11-01 63 views
0

有一種方法可以在循環中將函數名添加數字?帶有編號的函數名稱

我試圖做這樣說:

for($i=0;$i<$length;$i++){ 
{function.$i}(); 
} 

謝謝

+0

你到底想幹什麼? – 2014-11-01 08:23:23

回答

4

你需要 「變量函數」 這個http://php.net/manual/en/functions.variable-functions.php

PHP支持變量函數的概念。這意味着如果一個 變量名帶有括號,PHP將尋找一個名稱與 相同的函數,並且 將嘗試執行它。除此之外,這可用於實現回調函數表,函數表等等。

見這個例子:http://3v4l.org/sGLtj

function my_function_0() { echo "0"; } 
function my_function_1() { echo "1"; } 
function my_function_2() { echo "2"; } 
function my_function_3() { echo "3"; } 

for($i=0;$i<4;$i++) 
{ 
    $calling = 'my_function_'.$i; 
    $calling(); // by adding parentheses, a function with the same name with $calling's value will be called 
} 

這將調用的功能,在輸出0123

但要記住的是:

有效的函數名以a開頭字母或下劃線,然後是 任意數量的字母,數字或下劃線。

http://3v4l.org/sGLtj

所以,你可以有函數名多少,只要函數名不以數字開頭。

0

要調用一個函數,將其名稱作爲字符串生成,請使用call_user_func函數,將生成的字符串作爲其第一個參數傳遞。

function function0(){echo "Function 0\n";} 
function function1(){echo "Function 1\n";} 
function function2(){echo "Function 2\n";} 

for($i = 0; $i < 3; ++$i){ 
    call_user_func('function' . $i); 
}