2011-06-05 78 views
2

我有:调用函数 - 变量

echo $test->getNum1(); 
    echo $test->getNum2(); 
    echo $test->getNum9(); 

我怎样才能让事情:

for(i=0;i<10;i++){ 
    echo $test->getNum . $i .(); 
} 

+2

这里真正的问题是:为什么你有多个功能做同样的事情? – Tomalak 2011-06-05 22:06:46

回答

7
for(i=0;i<10;i++){ 
    $method = 'getNum' . $i; 
    echo $test->$method(); 
} 
+6

Alexs的回答是正确的。但* clean *方法是用参数创建一个方法'getNum()'。只是说';) – cem 2011-06-05 22:06:17

-3
for ($i = 0; $i < 10; $i++) { 
    echo eval('$text->getNum'.$i.'()'); 
} 
+4

(推荐)'eval'是邪恶的;) – cem 2011-06-05 22:08:14

+0

即使它不是最佳解决方案,使用'eval'也没有什么固有的错误。请检查无心的恐惧。 – meagar 2011-06-06 15:24:44

2

为补充Alex's answer,你也可以为一个功能通过使用call_user_funccall_user_func_array指定变量名。这些作为他们的第一个参数需要callback,所以你可以在其中提供一个字符串。在这种情况下,你可以做类似的情况如下:

for($i=0; $i<10; $i++){ 
    $method = array($test, 'getNum' . $i); 
    echo call_user_func($method); 
} 
1

这一次将是最简单和最强大的(也就是说,如果你不想写5条线,反射API):

for($i=0; $i<10; $i++) { 
    echo call_user_func(array($test, "getNum{$i}")); 
}