2009-09-07 3 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; 

The 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 имел бы свою первую часть true. '($ posts> = $ class - 1)' - проверяет, чтобы оператор if также имел свою вторую часть true. '$ showpost = $ class - 1;' - делает это применимое тело if-statement. '$ 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) в каждом случае if в примере. $ class должен быть больше 1 и меньше 8. Просто поместите эти 3 требования вместе, и вы получите код от martin. – OIS

+0

Спасибо, это не красиво выглядит, но он работает! – Homework

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