PHP 中的动态比较运算符

2022-08-30 22:30:20

是否有可能以任何方式将比较运算符作为变量传递给函数?例如,我正在考虑生成一些便利函数(我知道这不起作用):

function isAnd($var, $value, $operator = '==')
{
    if(isset($var) && $var $operator $value)
        return true;
}

if(isAnd(1, 1, '===')) echo 'worked';

提前致谢。


答案 1

您还可以使用version_compare()函数,因为您可以传递运算符,该运算符将用作比较作为第三个参数。


答案 2

这个怎么样?

function num_cond ($var1, $op, $var2) {

    switch ($op) {
        case "=":  return $var1 == $var2;
        case "!=": return $var1 != $var2;
        case ">=": return $var1 >= $var2;
        case "<=": return $var1 <= $var2;
        case ">":  return $var1 >  $var2;
        case "<":  return $var1 <  $var2;
    default:       return true;
    }   
}

测试:

$ops = array( "=", "!=", ">=", "<=", ">", "<" );
$v1 = 1; $v2 = 5;

foreach ($ops as $op) {
    if (num_cond($v1, $op, $v2)) echo "True  ($v1 $op $v2)\n"; else echo "False ($v1 $op $v2)\n";
}

推荐