2015-06-14 8 views
1

У меня вопрос о операторах PHP if. Допустим, мы имеем ситуацию:php условный оператор из строковой переменной

$id = 1; 
$condition = "$id > 0"; 
if($condition){...} 

Как я могу разобрать $condition переменную в актуальном состоянии, как:

$id = 1; 
$condition = "$id > 0"; 
if($id > 0){...} 

есть ли простой и безопасный способ для этого?

+0

что ваша проблема на самом деле? –

+0

Если вы хотите использовать тройной вместо if..else, то ссылайтесь: http://davidwalsh.name/php-shorthand-if-else-ternary-operators – sAcH

+0

@anantkumarsingh проблема в том, что я не знаю, как преобразовать строку в условие – Dainius

ответ

2

Вы должны использовать функцию, называемую eval. Это оценивает текст строки как php-код. Documentation

Если вы действительно хотите сделать это, по крайней мере, прочитать предупреждение

Caution The eval() language construct is very dangerous because it allows execution of arbitrary PHP code. Its use thus is discouraged. If you have carefully verified that there is no other option than to use this construct, pay special attention not to pass any user provided data into it without properly validating it beforehand.

Что-то вроде этого должны работать:

$id = 1; 
$condition = eval("$id > 0"); 
if($condition){...} 

Edit:

Eval ожидает полную строку кода, так что вы должны использовать его как это:

$id = -1; 
$condition = eval('return $id > 0;'); 
if ($condition) 
{ 
    echo 'true'; 
} 
else 
{ 
    echo 'false'; 
} 
+0

Я прочитал всю документацию и рассмотрю это ... Я немного скептически отношусь к этому – Dainius

+0

Ошибка его предоставления - Ошибка синтаксиса: неожиданный конец файла в файле: eval() 'd code в строке 1 –

+0

@SashantPardeshi, line один является присвоением $ id .. Может быть, вы что-то не так? Я проверю это. – walther

Смежные вопросы