php eval () возвращает - PullRequest
       4

php eval () возвращает

0 голосов
/ 01 октября 2010
<?php
  $a = "a == a";
  eval($a);

Это возвращает ложь. Я думал, что это должно вернуть истину. Любые мысли / идеи, почему это так.

Ответы [ 3 ]

5 голосов
/ 01 октября 2010

Непосредственно из документации PHP:

eval () возвращает NULL, если return не вызывается в вычисляемом коде, и в этом случае возвращается значение, переданное в return.Если в обработанном коде есть ошибка синтаксического анализа, eval () возвращает FALSE, и выполнение следующего кода продолжается нормально.

Похоже, что где-то в вашей строке есть синтаксическая ошибка.

1 голос
/ 02 октября 2010

Я думаю, этот способ использования eval() может работать на других языках (на ум приходит JavaScript), но в PHP это не так.

Выполнение команды «Оценить следующее выражение: a == a» имеет смысл и правильно ожидать истины. Но PHP eval() не работает таким образом. Это простой, примитивный метод отправки кода интерпретатору. Если вы eval () ed

eval("$b = 5; $a = $b == $b;");

$a будет верным впоследствии.

0 голосов
/ 02 октября 2010

Вы все еще не уверены в своих намерениях в отношении кода, поскольку ответа не было. Если вы хотите выяснить, равна ли переменная переменной с тем же именем, вы можете узнать это:

Возвращает true:

$a = $a == $a;
var_dump($a);

Это возвращает ложь:

$b = 5;

$a = $a == $b;
var_dump($a);

Просто удар в темноте, почему кто-то написал блок кода в оригинальном сообщении.

...