创建优雅的if语句

时间:2012-02-17 20:14:39

标签: php if-statement switch-statement

我有以下if语句集:

<?php

if (!empty($sn1link) && !empty($sn1)) {
    echo('<a href="'.$sn1link.'" target="_blank"><button class="lbutton-content">'.$sn1.'</button></a>');
}

if (!empty($sn2link) && !empty($sn2)) {
    echo('<a href="'.$sn2link.'" target="_blank"><button class="lbutton-content">'.$sn2.'</button></a>');
}

if (!empty($sn3link) && !empty($sn3)) {
    echo('<a href="'.$sn3link.'" target="_blank"><button class="lbutton-content">'.$sn3.'</button></a>');
}

if (!empty($sn4link) && !empty($sn4)) {
    echo('<a href="'.$sn4link.'" target="_blank"><button class="lbutton-content">'.$sn4.'</button></a>');
}

if (!empty($sn5link) && !empty($sn5)) {
    echo('<a href="'.$sn5link.'" target="_blank"><button class="lbutton-content">'.$sn5.'</button></a>');
?>

我想要一种更优雅的方式来组合这些if语句。我已经尝试else if但显然这只会显示返回if的第一个TRUE语句,而我想返回每个TRUE语句。我认为switch也不会起作用。

4 个答案:

答案 0 :(得分:0)

也许是带有变量变量的for循环:

<?php

for ($i = 1; $i <= 5; $i++) {

    $link  = 'sn'.$i.'link';
    $button = 'sn'.$i;

    if (!empty($$link) && !empty($$button)) {
        echo('<a href="'.$$link.'" target="_blank"><button class="lbutton-content">'.$$button.'</button></a>');
    }
}

答案 1 :(得分:0)

为什么不迭代并使用数组?

foreach($sn_array as $link => $text):
    if(!empty($link) && !empty($text)) echo ...;
endforeach;

答案 2 :(得分:0)

你应该把它变成一个循环,其中值在数组中。然后只需要一个if和一个echo语句来完成同样的事情。

$snList = array($sn1 => $sn1Link, $sn2 => $sn2Link, $sn3 => $sn3Link);

foreach ($snList as $name => $link) {
   echo('<a href="'.$link.'" target="_blank"><button class="lbutton-content">'.$name.'</button></a>');
}

你甚至不需要if语句,因为如果这些值不存在,你就不会首先将它们添加到$ snList数组中。

$snList = array();
$snList[$key] = $value;

答案 3 :(得分:0)

我不确定这会有多优雅,但您可以使用以下功能:

    function getButtonContent($link, $content) {

        if (!empty($link) && !empty($content)) {
            echo('<a href="'.$link.'" target="_blank"><button class="lbutton-content">'.$content.'</button></a>');
        }
    }

    getButtonContent($sn1link, $sn1);
    getButtonContent($sn2link, $sn2);
    getButtonContent($sn3link, $sn3);

etc....

如果您有更多内容或类似的东西,功能方法可能有所帮助。