【问题标题】:Optimize too many if else condition优化太多 if else 条件
【发布时间】:2017-09-19 00:52:32
【问题描述】:

我知道很多这样的问题,或者可以使用 switch ,但是我的代码不同,我是 php 的初学者。

我的 if elseif 代码:

<?php if (get_field('num_field') == '1'): ?>
    <li><a href="<?php the_field('dl_link1'); ?>"><?php the_field('t_dl_link1'); ?></a></li>
<?php elseif (get_field('num_field') == '2'): ?>
    <li><a href="<?php the_field('dl_link1'); ?>"><?php the_field('t_dl_link1'); ?></a></li>
    <li><a href="<?php the_field('dl_link2'); ?>"><?php the_field('t_dl_link2'); ?></a></li>
<?php elseif (get_field('num_field') == '3'): ?>
    <li><a href="<?php the_field('dl_link1'); ?>"><?php the_field('t_dl_link1'); ?></a></li>
    <li><a href="<?php the_field('dl_link2'); ?>"><?php the_field('t_dl_link2'); ?></a></li>
    <li><a href="<?php the_field('dl_link3'); ?>"><?php the_field('t_dl_link3'); ?></a></li>
<?php elseif (get_field('num_field') == '4'): ?>
    <li><a href="<?php the_field('dl_link1'); ?>"><?php the_field('t_dl_link1'); ?></a></li>
    <li><a href="<?php the_field('dl_link2'); ?>"><?php the_field('t_dl_link2'); ?></a></li>
    <li><a href="<?php the_field('dl_link3'); ?>"><?php the_field('t_dl_link3'); ?></a></li>
    <li><a href="<?php the_field('dl_link4'); ?>"><?php the_field('t_dl_link4'); ?></a></li>
<?php elseif (get_field('num_field') == '5'): ?>
    <li><a href="<?php the_field('dl_link1'); ?>"><?php the_field('t_dl_link1'); ?></a></li>
    <li><a href="<?php the_field('dl_link2'); ?>"><?php the_field('t_dl_link2'); ?></a></li>
    <li><a href="<?php the_field('dl_link3'); ?>"><?php the_field('t_dl_link3'); ?></a></li>
    <li><a href="<?php the_field('dl_link4'); ?>"><?php the_field('t_dl_link4'); ?></a></li>
    <li><a href="<?php the_field('dl_link5'); ?>"><?php the_field('t_dl_link5'); ?></a></li>
<?php else: ?>
<?php endif; ?>

如何优化这段代码?

谢谢

【问题讨论】:

  • 你可能会因为发布一个属于代码审查的问题而大发雷霆..
  • 你的代码像现在写的那样工作吗?如果是这样,您的问题在这里是题外话,应该在Code Review 提问。如果它没有按现在写的那样工作,那么edit你的问题,解释代码应该做什么以及它如何不按预期工作,并询问与代码相关的具体问题。
  • 如何优化这段代码?”在这里肯定是题外话,但是有很多用户觉得他们可以在他们想要的时候打破 SO 规则,鼓励更多这样的问题。
  • 对不起,好吧,我知道
  • 干得好@Barmar。回答题外话问题(违反 SO 规则)这是鼓励所有用户做同样事情的最佳方式,在充满重复、格式错误、题外话、不清楚(和更多...)问题。 PS:这不是我第一次看到您和许多其他享有很高声誉的用户付出很多努力让网站变得更糟。

标签: php if-statement optimization switch-statement conditional


【解决方案1】:

使用循环。

<?php
$end = get_field('num_field');
for ($i = 1; $i <= $end; $i++) { ?>
    <li><a href="<?php the_field('dl_link' . $i); ?>"><?php the_field('dl_link' . $i); ?></a></li>
<?php
}

【讨论】:

    【解决方案2】:
    $a = get_field('num_field');
    if($a => 1 && $a <= 5) {
        for($i = 1; $i <= $a; $i++) {
        ?>
            <li><a href="<?php the_field('dl_link'.$i); ?>"><?php the_field('t_dl_link'.$i); ?></a></li>
        <?php
        }
    }
    

    【讨论】:

      【解决方案3】:
      $num_field = get_field('num_field');
      
      for($i=1; $i < $num_field; $i++) {
          echo '<li><a href="'.the_field('dl_link'.$i).'">'.the_field('t_dl_link'.$i).'</a></li>';
      }
      

      【讨论】:

      • 请编辑您的答案以包含一些解释。仅代码的答案对教育未来的 SO 读者几乎没有作用。您的答案因质量低劣而在审核队列中。
      • 因为接受的答案充满了解释。去吧,然后删除它。
      猜你喜欢
      • 1970-01-01
      • 2017-06-27
      • 2019-12-08
      • 2022-01-24
      • 2020-11-23
      • 1970-01-01
      • 2023-03-28
      • 2010-12-29
      • 1970-01-01
      相关资源
      最近更新 更多