php - 结合 for 和 if 语句
问题描述
我一直在研究这是否可能,但我画了一个空白,我想知道是否可以将这些 for 和 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>
解决方案
当然,如果您考虑允许分配 $x 的最大值和最小值,您可以将它们组合起来。
外部 for 循环要求 $x 包含在区间 [0; $condition_limit_num)
如果您仅查看 for 和 first 如果您可以确定最小值必须大于零或 initial_num,那么您可以例如使用 initial_num 和零的最小值。使用 condition_limit_num-1 和 total_pages 的最大值作为最高可达值,即间隔 [min($x, 0); ,限制的工作方式相同。最大值($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;
?>
推荐阅读
- machine-learning - PCA 组件值的结果存在问题
- android - activity_splash.xml 的背景没有改变
- python - 从熊猫数据框中的句子列表创建二元组
- java - 类似查询的设计模式
- mysql - Codesignal.com 闹钟解决方案
- html - 两个输入框使用一个标签,输入框排列不正确
- javascript - 如何根据条件对对象数组中的属性求和
- javascript - 比萨饼和甜甜圈与 html
- python - 尝试使用 Python shell 中的输入/输出重定向时出现错误“无效语法”
- google-cloud-dataflow - 在配置时间后以编程方式终止订阅中的 PubSubIO.readMessages?