if 语句中的单个变量


Single variable inside an if statement

我基本上想要一种方法来编写一个只有一个变量的if语句,例如:

$var = "$foo == 'bar'";
if ($var) {
    // do code
}

或者更描述地说,而不是:

$run_list = array("normal");
if (!empty("extras")) array_push($run_list, "extras");
foreach ($run_list as $iteration) {
    if ($iteration == "normal") {
        if ($array1 == $array2) {
            # do 125 lines of code here
        }
    // Will not always be True (may only iterate once)
    } elseif ($iteration == "extras") {
        if ($array1 != $array2) {
            # do exact same 125 lines of code here
        }
    }
}

我怎么能做类似的事情,但这实际上有效:

$run_list = array("normal");
if (!empty("extras")) array_push($run_list, "extras");
foreach ($run_list as $iteration) {
    if ($iteration  = "normal") {
        $if_statement = "$array1 == $array2";
    } elseif ($iteration  = "extras") {
        $if_statement = "$array1 != $array2";
    }
    if ($if_statement) {
        # do 125 lines of code here
    }
}

而且我不想将 125 行代码放入一个函数中,因为它们包含代码前面设置的数十个变量,我真的不想创建一个必须传入数十个变量才能工作的函数。

您可能希望在此处合并布尔表达式

$run_list = array("normal");
if (!empty("extras")) array_push($run_list, "extras");
foreach ($run_list as $iteration) {
    if (
        ($iteration == "normal" && array1 == $array2) 
        || ($iteration == "extras" && $array1 != $array2)
    ) {
        # do 125 lines of code here
    }
}

您可以先创建一个布尔值,以便稍后在如下所示的条件下进行测试:

 $conditional = $iteration === "normal";

然后测试该条件:

if($conditional){
    //execute code
}