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