вызывающая функция - переменные - PullRequest
2 голосов
/ 06 июня 2011

у меня есть:

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

как я могу сделать что-то:

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

Ответы [ 4 ]

7 голосов
/ 06 июня 2011
for(i=0;i<10;i++){
  $method = 'getNum' . $i;
  echo  $test->$method();
}
2 голосов
/ 06 июня 2011

В дополнение к ответу Алекса , вы также можете указать имя переменной для функции, используя call_user_func или call_user_func_array. Они принимают callback в качестве первого аргумента, так что вы можете указать строку внутри этого. В этом случае вы можете сделать что-то вроде следующего:

for($i=0; $i<10; $i++){
  $method = array($test, 'getNum' . $i);
  echo call_user_func($method);
}
1 голос
/ 06 июня 2011

Этот будет самым простым и надежным (то есть, если вы не хотите писать еще 5 строк с api отражения):

for($i=0; $i<10; $i++) {
  echo call_user_func(array($test, "getNum{$i}")); 
}
0 голосов
/ 06 июня 2011
for ($i = 0; $i < 10; $i++) {
    echo eval('$text->getNum'.$i.'()');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...