2

我有八个 php 函数。他们是:

setInternationalText1()

setInternationalText2()

setInternationalText3()

...etc

我想使用最少的代码一次调用这些函数。我曾尝试使用 afor loop但 PHP 似乎不允许我将我的 ' counter' 变量连接到函数名称的末尾。见下文...

for ($i = 1; $i <= 8; $i++)
{  
   $newArticle->setInternationalText.$i();
}  

以上给了我以下(symfony)错误:

Notice: Undefined property: Imagine\NewsletterBundle\Entity\Article::$setInternationalText in /Applications/MAMP/htdocs/newsletters/src/Imagine/NewsletterBundle/Controller/SectionController.php line 260
4

2 回答 2

3

您可以使用 call_user_func() 函数:

for ($i = 1; $i <= 8; $i++)
{
    $fn = 'setInternationalText'.$i;
    call_user_func(array($newArticle,$fn));
} 

http://php.net/manual/en/function.call-user-func.php

于 2013-09-19T13:49:00.640 回答
3

正确的语法是:

$newArticle->{setInternationalText . $i}();
于 2013-09-21T08:46:46.180 回答