结合for和if语句

时间:2018-10-30 10:24:11

标签: php

我一直在研究这是否可行,但我已经空白了,我想知道是否有可能针对if语句一起优化这些语句?欢呼。

编辑(已更新#2 ):这是代码无法遍历页面的问题。

<?php
// calculate total number of pages
$total_pages = ceil($total_rows / $records_per_page);

// range of links to show
$range = 2;

// display links to 'range of pages' around 'current page'
$initial_num = $page - $range;
$condition_limit_num = ($page + $range)  + 1;
?>

    <ul class="pagination margin-zero">
<?php if ($page>1) : ?>
        <li>
            <a href='<?php echo $page_url; ?>page=1' title='Go to the first page.'>First Page</a>
        </li>
<?php endif; ?>

<?php
for ($x = min($initial_num, 0); $x <= max($condition_limit_num-1, $total_pages); $x++) :
    if ($x == $page) :
        ?>
        <li class='active'>
            <a href="#"><?php echo $x; ?> <span class="sr-only">(current)</span></a>
        </li>
    <?php else : ?>
        <li>
            <a href='<?php echo $page_url; ?>page=<?php echo $x; ?>'><?php echo $x; ?></a>
        </li>
        <?php
    endif;
endfor;
?>

<?php
if ($page<$total_pages) : ?>
        <li>
            <a href='<?php echo $page_url; ?>page=<?php echo $total_pages; ?>' title='Last page is <?php echo $total_pages; ?>'>
                Last Page
            </a>
        </li>
<?php endif; ?>
    </ul>

1 个答案:

答案 0 :(得分:1)

如果考虑允许分配$ x的最大值和最小值,当然可以将它们组合起来。

外部for循环要求$ x包含在间隔[0; $ condition_limit_num)

如果仅查看for,而第一个则可以确定最小值必须大于零或initial_num,那么例如可以使用initial_num和零的最小值。使用condition_limit_num-1和total_pages的最大值作为最高可达到的值,即区间[min($ x,0); max($ condition_limit_num-1; $ total_pages)]。

但是如果考虑到最内层,则要求$ x具有特定值($ page)。这意味着,每当$ page包含在间隔[[min($ x,0); max($ condition_limit_num-1; $ total_pages)]-您可以将该检查减少为一个if。

问题更新后更新:

由于最内层的if也具有else路径,因此无法将循环简化为单个if:

<?php
for ($x = max($initial_num, 0); $x <= min($condition_limit_num-1, $total_pages); $x++)) :
    if($x == $page) :
        ?>
        <li class='active'>
            <a href="#"><?php echo $x; ?> <span class="sr-only">(current)</span></a>
        </li>
        <?php else : ?>
        <li>
            <a href='<?php echo $page_url; ?>page=<?php echo $x; ?>'><?php echo $x; ?></a>
        </li>
        <?php
    endif;
endfor;
?>