if和elseif有什么区别?

Ami*_*mit 4 php conditional if-statement

这应该是一个简单的问题.我有一个简单的if/else语句:

    <?php
    // TOP PICTURE DEFINITIONS
    if ( is_page('english') ) {
        $toppic = 'page1.png';
    }
    if ( is_page('aboutus') ) {
        $toppic = 'page1.png';
    }
    if ( is_page('newspaper') ) {
        $toppic = 'page1.png';
    }
    else {
        $toppic = 'page1.png';
    }
?>
Run Code Online (Sandbox Code Playgroud)

和^^^有什么不同吗:

<?php
    // TOP PICTURE DEFINITIONS
    if ( is_page('english') ) {
        $toppic = 'page1.png';
    }
    elseif ( is_page('aboutus') ) {
        $toppic = 'page1.png';
    }
    elseif ( is_page('newspaper') ) {
        $toppic = 'page1.png';
    }
    else {
        $toppic = 'page1.png';
    }
?>
Run Code Online (Sandbox Code Playgroud)

我应该提一下,这是进入Wordpress的.直到现在,我已经使用了第一部分(没有其他,只是一系列'ifs'),并且它有效.我很想知道区别是什么.

谢谢!阿米特

Ham*_*ari 16

是.如果if/else满足控制条件,则将省略其余检查.else if只是嵌套if在里面else!

if ( is_page('english') ) { // if true, other statements are skipped
    $toppic = 'page1.png';
}
elseif ( is_page('aboutus') ) {
    $toppic = 'page1.png';
}
elseif ( is_page('newspaper') ) {
    $toppic = 'page1.png';
}
else {
    $toppic = 'page1.png';
}
Run Code Online (Sandbox Code Playgroud)

但在一系列的ifs中,所有这些都将进行测试.

if ( is_page('english') ) {
    $toppic = 'page1.png';
}
if ( is_page('aboutus') ) { // will be tested no matter what the outcome
                            // of the previous if statement was
    $toppic = 'page1.png';
}
if ( is_page('newspaper') ) { // the same here
    $toppic = 'page1.png';
}
else {
    $toppic = 'page1.png';
}
Run Code Online (Sandbox Code Playgroud)

因此,如果您正在检查诸如数字奇偶校验之类的属性,那么它可能是奇数或偶数,如果满足,您为什么还要打扰检查其他条件.这是浪费资源.因此,以下代码要好得多

if(number_is_odd) {
}
else { // if it's not odd, it's even for sure
}
Run Code Online (Sandbox Code Playgroud)

if(number_is_odd) {
}

if(!number_is_odd) {
}
Run Code Online (Sandbox Code Playgroud)

因为前者检查条件一次,而后者检查两次.对于具有两个以上状态的条件,情况也是如此.