创建优雅的if语句
问题描述:
我有下面的一组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
也可以。
答
也许一个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 2012-02-17 20:25:55
答
你应该让它成为一个循环,其中的值在一个数组中。那么只有一个,如果需要一个回声声明来完成同样的事情。
$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;
答
我不知道如何更优雅,这将是,但你可以使用这样的功能:如果你有这个
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....
更不是地方或有类似功能的方法的东西可能有帮助。
http://codereview.stackexchange.com/ – j08691 2012-02-17 20:26:14