eval()代码中出现意外的$ end

时间:2011-05-26 17:23:09

标签: php eval syntax-error

我讨厌提出这样一个具体问题,但我收到一个我无法弄清楚的错误。这是一个小时运行的cron作业。我正在创建一个任务数组,每个任务都有一个日期检查,应该是eval()'d。

$todo = array();
$todo[] = array( "date('z')%3 == 0", "Task 1" );
$todo[] = array( "date('N') == 1", "Task 2" );
foreach( $todo as $task )
{
    if( eval($task[0]) ) {
        echo $task[1];
    }
}

由于某种原因,eval()行给了我这个错误。 请注意,我为这两项任务收到此错误。

Parse error: syntax error, unexpected $end in /file.php(21) : eval()'d code on line 1

有什么建议吗?我试着寻找这个,却找不到任何东西。谢谢。

2 个答案:

答案 0 :(得分:21)

eval只接受陈述,而不是表达。您需要使用以下命令转换测试:

if (eval("return $task[0];")) {

答案 1 :(得分:1)

您缺少';'在字符串评估结束时。能够处理语句或表达式的评估函数。

示例:

$value = 7;
eval("\$value+=2;");
echo $value;