2015-06-26 2 views
-1

Можно ли сделать что-то вроде этого:Петля, только если условие выполнено?

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 
} 

Или есть другой способ сделать это без переписывания тот же код дважды как раз, чтобы удовлетворить все возможности?

+0

Это не имеет никакого смысла –

+0

@JohnConde Это псевдокод, конечно, это не имеет смысла. – user5009855

+0

Не понимаю. Не могли бы вы объяснить это более точно? – pavon147

ответ

0

(Дион Уорвик голос) Вот какие функции для:

function doSomething() { 
    //whatever 
}; 

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

Такого рода синтаксисом мысль о недействительна в PHP. Однако это очень умная идея. Но обслуживание кода одного из них принесет ад на земле. Лучше забудь об этом.

4

Обычный способ всегда использовать петлю. Если есть только один элемент, вы можете по-прежнему зацикливать только один раз.

надуманный пример

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

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

Массив, содержащийся в цикле 'foreach', сделает избыточную проверку' is_array'. то есть _'foreach ((array) $ values ​​as ... '_ –

+1

В большинстве случаев чистый результат будет таким же, но не все, следовательно, явная проверка (принцип наименьшего удивления и все такое). – salathe

+0

спасибо за разъяснение - я запомню это. –

0

почему бы не просто:

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

Я не уверен, что я точно понимаю, что вы просите, но если вы хотите запустить цикл хотя бы один раз и продолжить цикл для условия, тогда «Do While» - ваш ответ. Выполнять пока работает как раз, но проверяет ПОСЛЕ первого цикла, что означает, что он всегда запускается хотя бы один раз.

PHP Docs for Do While

Do-то время петля очень похожа, а петля, за исключением того, выражение истины проверяются в конце каждой итерации, а не в начале.

Пример:

$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); 

Для чего это стоит, заставляя переменную в массив одного значения, вероятно, будет легче читать. Как вы видите, здесь много чего делается для такой простой задачи.

0

То, что вы хотите, будет сделано вот так ...

foreach ($variables as $variable) { 

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

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

} 

Но это не так легко читаются, как только используя, если/другое заявление

Смежные вопросы