关于php eval()函数的问题

时间:2011-04-26 16:37:09

标签: php

我定义了几个变量:$ day_0,$ day_1 ... $ day_8并且需要构建一个字符串,其中包含字符串中嵌入的那些日期变量,这就是我所做的;

for($i = 0; $i <=8; $i++) {
       $d = 'day_'.$i;
       $day = eval($($d));echo $day;
       $cmd_line .= 'INPUT'.$i.'='.$quote.$day.$quote.$space;
}

但是php总是抱怨

syntax error, unexpected '(', expecting T_VARIABLE or '$' 

它出了什么问题?感谢。

4 个答案:

答案 0 :(得分:2)

无需使用eval

for($i = 0; $i <=8; $i++) {
       $day = ${'day_' . $i};
       echo $day;
       $cmd_line .= 'INPUT'.$i.'='.$quote.$day.$quote.$space;
}

有关变量变量的更多信息,请参阅PHP Documentation

答案 1 :(得分:1)

使用更安全,更简单的解决方案:

$d = 'day_'.$i;
$day = $$d;

答案 2 :(得分:0)

为什么不使用$$

for($i = 0; $i <=8; $i++) {
       $d = 'day_'.$i;
       $day = $$d; //this will point to $day_0 ...
       echo $day;
       $cmd_line .= 'INPUT'.$i.'='.$quote.$day.$quote.$space;
}

答案 3 :(得分:0)

我不建议使用eval()但是如果你想使用它,则将有效的php代码作为eval()参数(字符串)传递。

示例:

$d = 'day_1';
$phpcode = "\${$d}='something';";
$day = eval($phpcode);
echo $day_1;

这将打印出分配给新变量something的字符串$day_1

不要忘记使用;函数在您想要评估的每一行上添加eval()

数组会是更好的解决方案。