2015-06-26 53 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

(Dionne Warwick的聲音),這就是功能是:

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

感謝您的澄清 - 我會remenber。 –

0

爲什麼不只是簡單:

if($boolean){ 
    foreach($a as $b){ 
    // do stuff 
    } 
}else{ 
    // do other stuff 
} 
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); 

對於它的價值,迫使一個變量爲一個值陣列可能會更容易閱讀。正如你所看到的,這裏有很多這樣的簡單任務。

0

你想會像這樣做...

foreach ($variables as $variable) { 

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

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

} 

但是,這只是因爲使用不爲可讀多麼if/else語句

相關問題