清理PHP

hom*_*ork 0 php if-statement function

无论如何我可以清理

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";
}}}}}}
Run Code Online (Sandbox Code Playgroud)

因为我最不想要}}}}}}.

Gre*_*reg 7

if (($class >= 2) && ($class <= 7) && ($posts >= $class - 1))
    $showpost = $class - 1;
else
    $showpost = $posts;
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

这与原始代码中的逻辑相匹配 - 这只是看到模式的问题.

如果你需要$ showpost是一个字符串(很可能你没有),你可以像这样强制转换为字符串:

$showpost = (string)$showpost;
Run Code Online (Sandbox Code Playgroud)


Gum*_*mbo 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";
}
Run Code Online (Sandbox Code Playgroud)

或者甚至总结一下:

if ($class >= 2 && $class <= 7 && $posts >= ($class - 1)) {
    $showposts = $class - 1;
} else {
    $showposts = $posts;
}
Run Code Online (Sandbox Code Playgroud)