Phi*_*ord 2 php comparison if-statement dynamic
这可能吗?
$var_1 = 1;
$var_2 = 10;
$comparison = '>';
if($var_1 $comparison $var_2) {
// do something...
}
Run Code Online (Sandbox Code Playgroud)
现在的语法无效,但有没有办法做到这一点?
不是本地的(当然除外eval).您需要自己评估各种表达方式.构建包装函数并使用switch语句.或者对于非表达式比较一个简单的映射:
$var_1 = 1;
$var_2 = 10;
$comparison = '>';
$map = array(
">" => $var_1 > $var_2,
"<" => $var_1 < $var_2,
"==" => $var_1 == $var_2,
"!=" => $var_1 != $var_2,
);
if($map[$comparison]) {
// do something...
}
Run Code Online (Sandbox Code Playgroud)
有可能
if (eval("{$var_1} {$comparison} {$var_2}")) {
Run Code Online (Sandbox Code Playgroud)
但eval强烈建议不要这样做,只有当你无法取得理想的结果时才这样做
编辑 正如@mario所说,直到PHP 5.3这不起作用.在5.3中它确实如此.所以对于旧版本应该是
if (eval("return {$var_1} {$comparison} {$var_2};")) {
Run Code Online (Sandbox Code Playgroud)