我定义了几个变量:$ 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 '$'
它出了什么问题?感谢。
答案 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()
。
数组会是更好的解决方案。