2

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

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

// ...

}
4

2 回答 2

13

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

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

if($operator($value)){
}

或者,我想您可以使用“正常”功能:

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

if(operator($value)){
}
于 2012-07-23T21:10:29.833 回答
2

您可以(但永远不应该这样做)的另一件事是使用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';
}

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

于 2012-07-23T21:14:26.133 回答