3

我正在尝试模块化一个冗长的if..else功能。

$condition = "$a < $b";
if($condition)
{
    $c++;
}

有没有办法将文字字符串翻译成逻辑表达式?

4

4 回答 4

7

我正在尝试模块化一个冗长的 if..else 函数。

您不需要为此将条件放在字符串中,只需存储布尔值truefalse

$condition = ($a < $b);
if($condition)
{
    $c++;
}

$a 和 $b 的值可能会在 $condition 的定义及其用法之间发生变化

一种解决方案是闭包(假设定义和使用发生在同一范围内):

$condition = function() use (&$a, &$b) {
    return $a < $b;
}
$a = 1;
$b = 2;
if ($condition()) {
    echo 'a is less than b';
}

但是我不知道这对您是否有意义,而无需远程知道您要完成的工作。

于 2013-01-24T01:25:33.537 回答
2

如果您知道足以确定结果的变量,请使用 lambda

$f = function ($a, $b) { return $a < $b; }

if ($f($x, $y)){}
于 2013-01-24T01:32:32.077 回答
1

你可以使用eval来做到这一点。不过,不确定您为什么不立即评估条件。

于 2013-01-24T01:26:16.937 回答
-3
<?php
     $a=0;
     $b=1;
    function resultofcondition()
    {
        global $a,$b;
        return $a<$b;
    }
    if(resultofcondition()){
        echo " You are dumb,";
    }else{
        echo " I am dumb,"; 
    }
    $a=1;
    $b=0;
    if(resultofcondition()){
        echo " You were correct.";
    }else{
        echo " in your face.";
    }
?>

确实感谢您对此发表评论,缺少 GLOBAL 参数,对于那些投反对票的人,该代码会输出什么?¬_¬ w/e 玩得开心 xD

于 2013-01-24T01:25:23.233 回答