2009-09-07 88 views
0

有反正我可以清理清理PHP

if($class == 2 AND $posts >=1){$showpost ="1";} else {$showpost ="$posts"; 
if($class == 3 AND $posts >=2){$showpost ="2";} else {$showpost ="$posts"; 
if($class == 4 AND $posts >=3){$showpost ="3";} else {$showpost ="$posts"; 
if($class == 5 AND $posts >=4){$showpost ="4";} else {$showpost ="$posts"; 
if($class == 6 AND $posts >=5){$showpost ="5";} else {$showpost ="$posts"; 
if($class == 7 AND $posts >=6){$showpost ="6";} else {$showpost ="$posts"; 
}}}}}} 

因爲我不想}}}}}}在最後。

回答

7
if (($class >= 2) && ($class <= 7) && ($posts >= $class - 1)) 
    $showpost = $class - 1; 
else 
    $showpost = $posts; 

if被分成兩個部分:

if (
    ($class >= 2) && ($class <= 7) // Check $class is between 2 and 7 inclusive 

    && ($posts >= $class - 1)) // Check $posts >= $class -1 
           // so if $class is 4 this checks if $posts >= 3 

這在原來的代碼邏輯相匹配 - 它只是一個看到的圖案的問題。

如果您需要$ showpost是一個字符串(機會是你不),你可以轉換爲字符串,像這樣:

$showpost = (string)$showpost; 
+1

這個解決方案很有效,但是你能否解釋一下,因爲這對我來說沒有意義。 – Homework

+1

'($ class> = 2)&&($ class <= 7)' - 檢查以確保至少有一個if語句的第一部分爲真。 '($ posts> = $ class - 1)' - 檢查以確保if語句的第二部分是真實的。 '$ showpost = $ class - 1;' - 是否適用的if語句正文已經完成了。 '$ showpost = $ posts;' - 如果沒有if語句是真的,會發生什麼。 – Amber

+0

非常感謝。這有助於很多。 – Homework

5

可以去除所有$showpost ="$posts";語句除了最後:

if ($class == 2 AND $posts >=1) { 
    $showpost = "1"; 
} else if ($class == 3 AND $posts >=2) { 
    $showpost = "2"; 
} else if ($class == 4 AND $posts >=3) { 
    $showpost = "3"; 
} else if ($class == 5 AND $posts >=4) { 
    $showpost = "4"; 
} else if ($class == 6 AND $posts >=5) { 
    $showpost = "5"; 
} else if ($class == 7 AND $posts >=6) { 
    $showpost = "6"; 
} else { 
    $showpost ="$posts"; 
} 

甚至它總結本:

if ($class >= 2 && $class <= 7 && $posts >= ($class - 1)) { 
    $showposts = $class - 1; 
} else { 
    $showposts = $posts; 
} 
+0

您也可以刪除不必要的引號,如$ showpost =「$ posts」;和$ showpost =「1」; –

+0

感謝您的彙總版本。 – Homework

2

你可以使用這個,不是很好,但會奏效。

if($posts >= ($class - 1) AND $class >= 2 AND $class < 8) { $showpost = $class - 1; } 
else { $showpost = $posts; } 
+0

變量以示例代碼中的字符串結尾,因此您需要strval才能使其相似。 – OIS

+0

@joey:在示例中的每個句子中,$ post必須等於或大於($ class - 1)。 $ class必須大於1然後小於8.只要把這3個要求放在一起,你就得到了martin的代碼。 – OIS

+0

謝謝,這不是一個好看,但它的作品! – Homework