PHP: if !empty & empty (Programare, Php, Declarație If, Și Operator)

Karem a intrebat.

Deci, am acest formular… cu 2 câmpuri. „Youtube” și „link” Vreau să fac în cazul în care ați completat YouTube, ar trebui să facă acest lucru:

if(!empty($youtube)) {
 if ($pos === false) { 
 echo "Du skal indtaste youtube et URL, som starter med 'http://www.youtube.com/watch?..<br>";
 echo "<br> Har du ikke din video på YouTube, skal du ikke udfylde feltet, men kun 'Link' feltet.<br><br>";
 echo "<a href='javascript:history.back();'>Gå tilbage</a>";
 }

}

Acest lucru face treaba sa, dar vreau, de asemenea, pentru a verifica pe același if(), dacă nimic în link.So ive făcut acest lucru:

    if(!empty($youtube) && empty($link)) {
     if ($pos === false) { 
     echo "Du skal indtaste youtube et URL, som starter med 'http://www.youtube.com/watch?..<br>";
     echo "<br> Har du ikke din video på YouTube, skal du ikke udfylde feltet, men kun 'Link' feltet.<br><br>";
     echo "<a href='javascript:history.back();'>Gå tilbage</a>";
     }
}

Dar ce se întâmplă dacă vreau să verific opusul, dacă theres ceva în LINK și nimic în youtube? Și dacă aș vrea să verific dacă nu există nimic în cele două?

3 răspunsuri
Felix Kling
if(!empty($youtube) && empty($link)) {

}
else if(empty($youtube) && !empty($link)) {

}
else if(empty($youtube) && empty($link)) {
}

bart

Iată o modalitate compactă de a face ceva diferit în toate cele patru cazuri:

if(empty($youtube)) {
    if(empty($link)) {
        # both empty
    } else {
        # only $youtube not empty
    }
} else {
    if(empty($link)) {
        # only $link empty
    } else {
        # both not empty
    }
}

Dacă doriți să utilizați o expresie în loc, puteți utiliza ?: în loc:

echo empty($youtube) ? ( empty($link) ? 'both empty' : 'only $youtube not empty' )
                     : ( empty($link) ? 'only $link empty' : 'both not empty' );

Eli

Pentru mai multe cazuri, sau chiar doar câteva cazuri care implică o mulțime de criterii, luați în considerare utilizarea unui comutator.

switch( true ){

    case ( !empty($youtube) && !empty($link) ):{
        // Nothing is empty...
        break;
    }

    case ( !empty($youtube) && empty($link) ):{
        // One is empty...
        break;
    }

    case ( empty($youtube) && !empty($link) ):{
        // The other is empty...
        break;
    }

    case ( empty($youtube) && empty($link) ):{
        // Everything is empty
        break;
    }

    default:{
        // Even if you don't expect ever to use it, it's a good idea to ALWAYS have a default.
        // That way if you change it, or miss a case, you have some default handler.
        break;
    }

}

Dacă aveți mai multe cazuri care necesită aceeași acțiune, puteți să le suprapuneți și să omiteți break; pentru a trece prin flux. Doar poate puneți un comentariu de genul /*Flowing through*/ pentru a fi explicit că o faceți intenționat.

Rețineți că { } din jurul cazurilor nu sunt obligatorii, dar sunt utile pentru lizibilitate și pentru plierea codului.

Mai multe despre switch: http://php.net/manual/en/control-structures.switch.php