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


Can I set logical operators to variables in php

我想做一些类似(下面)的事情,可能吗?

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

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

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

或者,我想你可以使用一个"正常"功能:

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

另一件可以(但永远不应该做)的事情是使用eval():

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

同样,这只是为了向你展示它是可以做到的,但你永远不应该使用eval(),否则我会亲手杀死一只小猫!

如果你认为你需要这样的东西,我真的认为你的设计有很大的缺陷。

正如@rocket在评论中所说。更干净的方法是:

<?php
$value = 400;
$operator = '>=';
eval("'$result = $value$operator 400;");
if ($result) {
    echo 'Something';
}

而且这种清洁并不意味着你可以使用。我是认真的,如果你用这个,我会追捕你;)