使用isset()的动态变量?

时间:2014-01-30 11:35:21

标签: php variables isset

我有一个包含动态变量的循环,例如:

while(i < 10){
  echo  ${"dynamic" . $i . "var"};
  $i++;
};

如果设置了原始var(比如$dynamic3var),我想只回显变量,所以我添加:

while(i < 10){
  if(isset(${"dynamic" . $i . "var"})){
    echo  ${"dynamic" . $i . "var"};
  $i++;
  };
};

然而,这不会起作用,因为它仍在拾取$i

有没有人知道这样做的正确方法?

2 个答案:

答案 0 :(得分:0)

试试这个:

while($i < 10){
  $label = "dynamic".$i."var";

  if(isset($$label))
    echo $$label;

  $i ++;
};

答案 1 :(得分:0)

由于全局变量是糟糕的想法,您应该重新考虑您的代码。一个简单的重构就是使用一个关联数组(即使它在第一步仍然是一个全局变量)。然后你可以使用

if( isset($dynamic[$i]) ) ...

为什么Globals是邪恶的?阅读:http://tomnomnom.com/posts/why-global-state-is-the-devil-and-how-to-avoid-using-it