2010-02-27 2 views
8

Więc mam ten formularz .. Z 2 polami. „Youtube” i „link” Chcę to zrobić, jeśli wypełnione YouTube, powinien to zrobić:PHP: if! Empty & empty

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>"; 
} 

}

Ten wykonywać swoje zadania, ale chcę też sprawdzić na to samo, jeśli(), jeśli nic w łączu. Tak ive zrobiłem tak:

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>"; 
    } 
} 

Ale co, jeśli chcę sprawdzić odwrotnie, jeśli tam coś w link i nic w YouTube? A jeśli chcę sprawdzić, czy w tych dwóch nie ma nic?

Odpowiedz

17
if(!empty($youtube) && empty($link)) { 

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

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

Oto kompaktowy sposób, aby zrobić coś innego we wszystkich czterech przypadkach:

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

Jeśli chcesz użyć wyrażenia zamiast tego można użyć ?: zamiast:

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

Dla kilka przypadków, lub nawet kilka przypadków z dużą ilością kryteriów, rozważ użycie przełącznika.

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; 
    } 

} 

Jeśli masz wiele spraw, które wymagają tego samego działania, możesz je ułożyć i pominąć przerwę; przepłynąć. Po prostu umieść komentarz typu/* Flowing through * /, więc wyraźnie mówisz o tym celowo.

Należy zauważyć, że {} wokół przypadków nie są wymagane, ale są ładne pod względem czytelności i składania kodu.

Więcej informacji o przełączniku: http://php.net/manual/en/control-structures.switch.php