我想做一些类似(下面)的事情,可能吗?
$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';
}
而且不这种清洁并不意味着你可以使用。我是认真的,如果你用这个,我会追捕你;)