我用PHP OOP做了这个循环:
for($i=1;$i<=5;$i++){
echo "
<tr>
<td>$i</td>
<td>".$menuSet->GetMenuLink1()."</td>
<td>
<a title='Edit' href='#'><span class='glyphicon glyphicon-pencil'></span></a>
<a title='Remove' href='#'><span class='glyphicon glyphicon-remove'></span></a>
</td>
</tr>
";
// replace $menuSet->GetMenuLink1() with another variable
}
正如您所看到的,我想将$menuSet->GetMenuLink1()
变量替换为$menuSet->GetMenuLink2()
,此循环一直持续到$menuSet->GetMenuLink5()
。
(向GetMenuLink函数添加1)
那我怎么能在php中做到这一点?
答案 0 :(得分:1)
这听起来像真的糟糕的设计模式 - 如果可能的话,你应该避免它。但是你问的方式是可行的。要正确地执行此操作,您应该重建函数以使用您使用的参数,因此您拥有GetMenuLink(1)
和GetMenuLink(2)
而不是GetMenuLink1()
和GetMenuLink2()
。
function getMenuLink($i) {
// Code for the function goes here
// Adapt for usage of an arugment, e.g. if ($i == 1) { ... }
// Use $i to get the link you wish to produce
}
如果由于某些模糊原因而无法实现,请使用函数名称定义变量,并将其用作$variable()
,如下所示。这称为变量函数。但是,我强烈建议您重新构建函数以取代参数,并避免使用这样的解决方案。
for ($i=1; $i <= 5; $i++){
$method_name = "GetMenuLink".$i;
echo "
<tr>
<td>$i</td>
<td>".$menuSet->$method_name()."</td>
// .....
答案 1 :(得分:0)
虽然这不是最好的设计,但您可以使用call_user_func
和array
包含您要调用的方法。在您的情况下,您可以执行以下操作:
call_user_func(array($menuSet, 'GetMenuLink' . $i));
使用PHP的callable
数组。
但就个人而言,我建议重构一下。在类中,在名为GetMenuLinks
或类似的方法中执行此处理。
答案 2 :(得分:0)
PHP实际上在从变量调用函数方面非常自由。我不记得它的名字是什么,但你可以做到这一点:
qApp.processEvents()
** 不确定这是一个好主意你可能想看看其他模式