我有foreach语句,基本上创建了一个链接。每个链接都有自己独特的类。我想要做的是根据链接的类别创建特定的链接文本。我知道我可以用JavaScript做到这一点,但我更愿意通过PHP来实现。
我尝试了两种不同的解决方案。第一个如下:
<?php
foreach($plugins as $link):
$linkParams = '';
if(isset($link['params'])){
foreach($link['params'] as $k => $v){
$linkParams .= ' ' . $k . '="' . $v . '"';
}
}
?>
<?php
$linkClass = $link['class'];
?>
<a class="btn btn-block btn-<?php echo $link['class'];?>" rel="nofollow" <?php echo $linkParams;?> href="<?php echo JRoute::_($link['link']);?>"><?php
if ($linkClass = "facebookslogin"){echo 'Login With Facebook';}
if ($linkClass = "googleslogin"){echo 'Login With Google';}
if ($linkClass = "twitterslogin"){echo 'Login With Twitter';}
if ($linkClass = "linkedinslogin"){echo 'Login With LinkedIn';}
if ($linkClass = "liveslogin"){echo 'Login With Outlook';} ?></a>
<?php endforeach; ?>
这种方法的结果是每个链接都有相同的文本:“使用带有OutlookLogin的带有OutlookLogin的带有GoogleLogin的FacebookLogin登录”
我还尝试按照以下代码使用str_replace:
<?php
foreach($plugins as $link):
$linkParams = '';
if(isset($link['params'])){
foreach($link['params'] as $k => $v){
$linkParams .= ' ' . $k . '="' . $v . '"';
}
}
?>
<?php
$linkClass = $link['class'];
$facebookslogin = str_replace("facebookslogin", "Login With Facebook", $linkClass);
$googleslogin = str_replace("googleslogin", "Login With Google", $linkClass);
$twitterslogin = str_replace("twitterslogin", "Login With Twitter", $linkClass);
$linkedinslogin = str_replace("linkedinslogin", "Login With LinkedIn", $linkClass);
$liveslogin = str_replace("liveslogin", "Login With Outlook", $linkClass);
$loginText = $fbslogin.$googleslogin.$twitterslogin.$linkedinslogin.$liveslogin;
?>
<a class="btn btn-block btn-<?php echo $link['class'];?>" rel="nofollow" <?php echo $linkParams;?> href="<?php echo JRoute::_($link['link']);?>"><?php echo $loginText; ?></a>
<?php endforeach; ?>
这样做的结果是每个链接都有正确的文本,但它被其他类(不正确的文本)包围。例如,Facebook链接是“使用Facebookfacebooksloginfacebooksloginfacebooksloginfacebookslogin登录”
我很确定这可以做到,但我根本没有PHP知道如何做到这一点。我在谷歌和Stack Overflow上搜索了这个,但我发现问题的一部分没有词汇来知道要搜索什么。任何帮助一如既往地受到赞赏。谢谢。
答案 0 :(得分:5)
你的第一个例子实际上是正确的,你只需要用双倍替换单个“=”。
if ($linkClass = "facebookslogin"){echo 'Login With Facebook';}
should become
if ($linkClass == "facebookslogin"){echo 'Login With Facebook';}
使用数组的简单方法可以这样工作:
<?php
$linkText = array(
'facebookslogin' => 'Login with Facebook',
'googleslogin' => 'Login with Google'
);
?>
<a class="btn btn-block"><?php echo $linkText[$linkClass]; ?></a>