#php #eval #syntax-error
#php #eval #синтаксическая ошибка
Вопрос:
Мне неприятно задавать такой конкретный вопрос, но я получаю ошибку, которую не могу понять. Это в задании 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
Есть предложения? Я пытался выполнить поиск по этому, но ничего не смог найти. Спасибо.
Комментарии:
1. Вам где-то не хватает фигурной скобки. Это не может быть весь скрипт.
2. Я не вижу никаких отсутствующих фигурных скобок. Скрипт работает, за исключением части eval().
3. Если у вас PHP > = 5.3, вам следует использовать анонимные функции вместо кода eval’d для вашего собственного здравомыслия.
Ответ №1:
eval
принимает только инструкции, а не выражения. Вам нужно преобразовать ваши тесты с:
if (eval("return $task[0];")) {
Комментарии:
1. Идеально! Сработало как по волшебству! После 20 лет программирования на PHP мне впервые понадобилось использовать eval ()
Ответ №2:
Вы пропускаете ‘;’ в конце вычисления строки. Функция Eval, способная обрабатывать инструкции или выражения.
Пример:
$value = 7;
eval("$value =2;");
echo $value;