我可以在php中将逻辑运算符设置为变量

时间:2012-07-23 21:08:54

标签: php operators logic

我想做(如下),可能吗?

$operator = >=;
if($value.$operator 400){

// ...

}

2 个答案:

答案 0 :(得分:12)

您不能将运算符存储为变量,但可以存储函数(在PHP 5.3+中)。试试这个:

$operator = function($a){
    return $a >= 400;
}

if($operator($value)){
}

或者,我猜你可以使用“普通”功能:

function operator($a){
    return $a >= 400;
}

if(operator($value)){
}

答案 1 :(得分:2)

你可以做的另一件事(但从来没有做过)正在使用eval()

<?php
$value = 400;
$operator = '>=';
eval('if('.$value.$operator.' 400) echo "something";');

再一次,这只是为了告诉你它可以完成,但你永远不会使用eval()或者我个人会杀死一只小猫!

如果你觉得自己需要这样的东西,我认真地认为你的设计存在很大的缺陷。

正如@rocket在the comments中所说的那样。更简洁的方法是:

<?php
$value = 400;
$operator = '>=';
eval("\$result = $value$operator 400;");

if ($result) {
    echo 'Something';
}

没有这个更清洁并不意味着你可以使用。我很认真,如果你使用它,我会打猎你;)