仅在满足条件时循环?

时间:2015-06-26 19:43:30

标签: php

是否可以做这样的事情:

if ($boolean == true) {
    foreach ($variables as $variable) {
}

// some code that can be run either with a loop or without

if ($boolean == true) {
    } // end the foreach loop
}

还是有另一种方法可以做到这一点,而不是为了满足所有可能性而重写相同的代码两次吗?

5 个答案:

答案 0 :(得分:4)

传统的方法是始终使用循环。如果只有一个项目,那么您仍然只能一次

已提交的示例

$values = …;
if (!is_array($values)) {
    $values = array($values);
}

foreach ($values as $value) {
    // Do your work
}

答案 1 :(得分:1)

我不确定我是否完全理解你的要求,但如果你想至少运行一次循环,并继续循环一个条件,那么“Do While”就是你的答案。一段时间工作就像一段时间,但在第一个循环运行后检查 - 这意味着它总是至少运行一次。

PHP Docs for Do While

  

do-while循环与while循环非常相似,除了在每次迭代结束时而不是在开始时检查真值表达式。

示例:

$arrayofstuff = array('one ','two ','three '); // Optional array of stuff
$i=0; // Counts the loops
echo 'starting...';
do {
    // Do stuff at least once here

    // Array stuff if needed
    if(isset($arrayofstuff[$i])) {
        echo $arrayofstuff[$i]; // Uses loop # to get from array
    } else {
        break; // ends loop because array is empty
    }
    $i++;
} while (true);

对于它的价值,将变量强制转换为单个值数组可能更容易阅读。正如你所看到的,这里有一个很简单的任务。

答案 2 :(得分:0)

为什么不简单:

if($boolean){
   foreach($a as $b){   
     // do stuff
   } 
}else{
    // do other stuff
}

答案 3 :(得分:0)

(Dionne Warwick的声音)这是什么功能:

function doSomething() {
    //whatever
};

if ($boolean) 
    for($variables as $variable) doSomething();
else 
    doSomething();

你想到的那种语法在PHP中并不有效。不过,这是一个非常聪明的主意。但其中一个的代码维护会带来地狱般的地狱。最好忘记它。

答案 4 :(得分:0)

你想要的就是这样......

foreach ($variables as $variable) {

    // some code that can be run either with a loop or without

    if ($boolean !== true) {
        break;
    }

}

但这不像使用if / else语句那样可读