首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请推荐一种巧妙、优雅的方式来编写这些重复的'if‘语句

请推荐一种巧妙、优雅的方式来编写这些重复的'if‘语句
EN

Stack Overflow用户
提问于 2010-07-17 00:50:39
回答 6查看 341关注 0票数 0

我只知道我做这件事的方式很糟糕:

代码语言:javascript
复制
<?php } elseif ( is_single()) { 

    $url = wp_get_referer();
    $path_parts = pathinfo($url);
    $mycat = $path_parts['filename'];

    if ( $mycat == "animation"  ) {
        $_SESSION["theCategory"] = $mycat;?>
        <a href="<?php bloginfo('home')?>/category/<?php echo $_SESSION["theCategory"];?>"><?php echo $_SESSION["theCategory"];?></a>
<?php } elseif ($mycat == "direction"){     
        $_SESSION["theCategory"] = $mycat;?>
        <a href="<?php bloginfo('home')?>/category/<?php echo $_SESSION["theCategory"];?>"><?php echo $_SESSION["theCategory"];?></a>
<?php } elseif ($mycat == "grading"){   
        $_SESSION["theCategory"] = $mycat;?>
        <a href="<?php bloginfo('home')?>/category/<?php echo $_SESSION["theCategory"];?>"><?php echo $_SESSION["theCategory"];?></a>
<?php } elseif ($mycat == "online"){    
        $_SESSION["theCategory"] = $mycat;?>
        <a href="<?php bloginfo('home')?>/category/<?php echo $_SESSION["theCategory"];?>"><?php echo $_SESSION["theCategory"];?></a>
<?php } elseif ($mycat == "showcase"){  
        $_SESSION["theCategory"] = $mycat;?>
        <a href="<?php bloginfo('home')?>/category/<?php echo $_SESSION["theCategory"];?>"><?php echo $_SESSION["theCategory"];?></a>
<?php } elseif ($mycat == "showreel"){  
        $_SESSION["theCategory"] = $mycat;?>
        <a href="<?php bloginfo('home')?>/category/<?php echo $_SESSION["theCategory"];?>"><?php echo $_SESSION["theCategory"];?></a>
<?php } elseif ($mycat == "vfx"){   
        $_SESSION["theCategory"] = $mycat;?>
        <a href="<?php bloginfo('home')?>/category/<?php echo $_SESSION["theCategory"];?>"><?php echo $_SESSION["theCategory"];?></a>
<?php }else{ ?><a href="<?php bloginfo('home')?>/category/<?php echo $_SESSION["theCategory"];?>"><?php echo $_SESSION["theCategory"];?></a><?php };?>

<?php } //end if is_single ?>

它起作用了。但它是混乱和重复的。我试着走这条路:

代码语言:javascript
复制
<?php if ($mycat == "animation" || "direction" || "grading"){

但它根本不起作用。

EN

回答 6

Stack Overflow用户

发布于 2010-07-17 00:55:46

创建一个保存这些值的数组,然后测试数组中是否存在$mycat的值。此外,无论$mycat是什么,您都会回显链接,因此可以完全删除else语句,并将if结构进一步简化为以下内容:

代码语言:javascript
复制
$categories = array(
    'animation', 
    'direction', 
    'grading', 
    'online', 
    'showcase', 
    'showreel', 
    'vfx'
);

if (in_array($mycat, $categories)) {
    $_SESSION["theCategory"] = $mycat;
}

?>
<a href="<?php bloginfo('home')?>/category/<?php echo $_SESSION["theCategory"];?>"><?php echo $_SESSION["theCategory"];?></a>

就像其他人所说的,记住避开你的输出。

票数 7
EN

Stack Overflow用户

发布于 2010-07-17 00:56:54

像这样的东西?

代码语言:javascript
复制
<?php
$cats = array(
    'animation',
    'direction',
    'grading',
    'online',
    'showcase',
    'showreel'
    'vfx',
);
if ( in_array($mycat, $cats) ) :
    $_SESSION['theCategory'] = $mycat; ?>
    <a href="<?php bloginfo('home')?>/category/<?php echo $mycat;?>"><?php echo $mycat;?></a>
<?php else: ?>
    <a href="<?php bloginfo('home')?>/category/<?php echo $_SESSION["theCategory"];?>"><?php echo $_SESSION["theCategory"];?></a>
<?php endif; ?>
票数 5
EN

Stack Overflow用户

发布于 2010-07-17 01:01:45

并使用switch语句:

代码语言:javascript
复制
switch($mycat) {
    case 'animation':
    case 'direction':
    case 'grading':
    case 'online':
    case 'showcase':
    case 'showreel':
    case 'vfx':
        $_SESSION["theCategory"] = $mycat; 
    default:
        ?>
        <a href="<?php bloginfo('home')?>/category/<?php echo $_SESSION["theCategory"];?>"><?php echo $_SESSION["theCategory"];?></a>
        <?php
}

请注意case语句之后的详细说明。你可以这样做,或者:

代码语言:javascript
复制
switch($mycat) {
    case 'animation':
    case 'direction':
    case 'grading':
    case 'online':
    case 'showcase':
    case 'showreel':
    case 'vfx':
        $_SESSION["theCategory"] = $mycat; 
}
?>
<a href="<?php bloginfo('home')?>/category/<?php echo $_SESSION["theCategory"];?>"><?php echo $_SESSION["theCategory"];?></a>
<?php
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3267159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档