1
我有一系列if
/elseif
條件語句使用相同的結構和語法,我想清理並壓縮foreach
內的代碼以更容易地添加並隨着列表的增長刪除項目。什麼我開始用看起來是這樣的:在foreach循環(PHP)中重複if/elseif
if ($condition1 == 1 && ($condition2 == 1 || $condition3 == 1)) {
$var = 'string 1';
} elseif ($condition1 == 2 && ($condition2 == 2 || $condition3 == 2)) {
$var = 'string 2';
} elseif ($condition1 == 3 && ($condition2 == 3 || $condition3 == 3)) {
$var = 'string 3';
} elseif ($condition1 == 4 && ($condition2 == 4 || $condition3 == 4)) {
$var = 'string 4';
} else {
$var = 'default string';
}
理想情況下,我會結構本更像是:
$conditions = array(
'string 1' => 1,
'string 2' => 2,
'string 3' => 3,
'string 4' => 4,
);
foreach ($conditions as $key => $value) {
if ($condition1 == $value && ($condition2 == $value || $condition3 == $value))
$var = $key;
}
if (empty($var))
$var = 'default string';
這裏最大的問題是,我想在第一次迭代後的所有if
聲明爲elseif
以防萬一滿足多個條件,所以我可以通過數組中項目的順序來控制層次結構。而且,這種方法可能完全錯誤,可能有更好的方法來完全解決這個問題,所以我願意接受任何和所有的批評!
看起來像我誤解了。你不需要只滿足一個條件?如果兩個符合,所以你想爲'$ var'有兩個值? – ishegg
對不起,我刪除了我的評論,但你讀得太快了。 :)您的解決方案似乎可以完美地滿足我需要的功能。欣賞它! –
你確定嗎?這確實會在滿足條件後停止執行(我雖然這是你想要的)。但重新閱讀你的問題,你似乎需要多個條件相遇。 – ishegg