if文

2012-02-17 17 views
1

I if次の文のセットがあります。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のいずれかが動作するとは思わない。

+0

http://codereview.stackexchange.com/ – j08691

答えて

0

配列を反復処理し、使用しないのはなぜ?

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

素晴らしい。完璧に動作します。私はこれで始まると考えていたはずです。 – Ryan

+0

@ Ryanこれは、望ましくない衝突を引き起こします。 – Alexander

+0

@Alexanderそれはなぜでしょうか?ここで面白くないのは、もっとよく理解したいのです。 – Ryan

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

これは効果がありますが、一般的には可変変数を使用することは悪い習慣とみなされます。 – Kenaniah

0

値を配列にする必要があります。 1つのif文と1つの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>'); 
} 

値が存在しない場合、あなたは、単に最初の場所で$ snList配列に追加していないので、あなたも、if文を必要としません。

$snList = array(); 
$snList[$key] = $value; 
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.... 

役立つかもしれません。