2014-10-27 5 views
1

Есть ли способ установить условия внутри переменной, а затем использовать эту переменную в инструкции if? См. Пример ниже:Положить условие IF внутри переменной

$value1 = 10; 
$value2 = 10; 

$value_condition = '($value1 == $value2)'; 

if ($value_condition) { 
    echo 'It works!'; 
} else { 
    echo 'It doesnt work.'; 
} 

Я понимаю, что это может быть странный вопрос. Я изучаю основы PHP.

+1

Нет, вы не можете этого сделать. $ value_condition - это всего лишь строка в приведенном выше коде. почему ты хочешь сделать это? – Steve

+0

@steve Мне просто интересно, работает ли этот тип концепции. –

+0

ОК, так как многочисленные ответы теперь появляются, вы можете сохранить полученное логическое значение и использовать это. Но если вопрос заключается в том, будет ли строка кода php оценена в условном блоке, тогда ответ будет отрицательным. – Steve

ответ

2

Не нужно использовать строки. Используйте его непосредственно следующим образом:

$value1 = 10; 
$value2 = 10; 

$value_condition = ($value1 == $value2); 

if ($value_condition) { 
    echo 'It works!'; 
} else { 
    echo 'It doesnt work.'; 
} 

Или оценить, вы можете использовать этот способ, используя ", так как она расширяется и оценивает переменные внутри { ... }.

Я считаю, что это может сработать! Кроме того, использование eval() - это зло! Поэтому убедитесь, что вы используете его в нужном месте, где вы уверены, что не может быть никакого другого ввода функции eval()!

+1

Он делает, спасибо. –

+0

@HenrikPetterson Рад, что это помогло! :) –

+0

Для полноты вы также можете явно вызвать eval. См. Http://php.net/manual/en/function.eval.php – DragonYen

1

== оператор оценивает как логическое, так что вы можете сделать

$value1 = 10; 
$value2 = 10; 

$value_condition = ($value1 == $value2); 

if ($value_condition) { 
    echo 'It works!'; 
} else { 
    echo 'It doesnt work.'; 
} 
1

Просто присвоить результат Comparision к переменной.

$value1 = 10; 
$value2 = 10; 

$value_condition = ($value1 == $value2); 

if ($value_condition) { 
    echo 'It works!'; 
} else { 
    echo 'It doesnt work.'; 
} 
+0

Большое спасибо. –

1

Заявление if проверяет булево значение. Вы могли бы что-то вроде этого:

if (true) { 

Вы можете назначить булевы значения переменной:

$boolValue = true; 

Вы можете использовать переменные в if заявлении:

if ($boolValue) { 
    // true 

В вашем примере:

$value_condition = $value1 == $value2; // $value_condition is now true or false 
if ($value_condition) { 
+0

Привет, спасибо. –

1

В зависимости от того, что вы пытаетесь сделать, здесь может помочь anonymous function.

$value1 = 10; 
$value2 = 10; 

$equals = function($a, $b) { 
    return $a == $b; 
}; 

if ($equals($value1, $value2)) { 
    echo 'It works!'; 
} else { 
    echo 'It doesnt work.'; 
} 

Однако, я бы только сделать это так (а не с регулярной функции), когда вы используете use().

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