php - 如何在 php 中使用 for 制作 zig-zag 数字?
问题描述
我有这个代码
<table class="table table-bordered text-center font-weight-bold">
<tr>
<?php
for ($i = 1; $i <= 60; $i++) { ?>
<td class="<?= $i == 7 || $i == 8 || $i == 11 ? 'bg-danger' : 'bg-success'; ?> m-0 p-0">
<a href="#" style="text-decoration: none; font-size: 5vw">
<div class="h-100 w-100 my-2 text-white">
<?= $i; ?>
</div>
</a>
</td>
<?php if (!empty($i) && ($i) % 6 == 0) {
?>
</tr>
<tr>
<?php } ?>
<?php }
?>
</tr>
</table>
显示这个 结果我不想
我想要这样的结果
1 2 3 4 5 6
12 11 10 9 8 7
13 14 15 16 17 18
24 23 22 21 20 19
25 26 27 28 29 30
36 35 34 33 32 31
37 38 39 40 41 42
ETC...
我不知道最简单的逻辑是如何工作的
解决方案
我按照以下步骤重写了处理循环之前的值的代码:
range()
用;创建一个有 60 个连续位置的数组- 将数组分成块,用值制作一个矩阵;
- 对于数组中的每一行,反转奇数索引。
该$selected
数组用于将“bg-danger”类应用于 td。
<table class="table table-bordered text-center font-weight-bold">
<?php
$numbers = range(1, 60);
$handle_values = array_chunk($numbers, 6);
foreach($handle_values as $k => &$hv) {
if($k & 1) $hv = array_reverse($hv);
}
$selected = [7, 8, 11];
foreach ($handle_values as $values) {
?>
<tr>
<?php foreach($values as $i) { ?>
<td class="<?= in_array($i, $selected) ? 'bg-danger' : 'bg-success'; ?> m-0 p-0">
<a href="#" style="text-decoration: none; font-size: 5vw">
<div class="h-100 w-100 my-2 text-white">
<?= $i; ?>
</div>
</a>
</td>
<?php } ?>
</tr>
<?php } ?>
</table>
推荐阅读
- signalr.client - 建立连接时的 SignalR Core 调用函数
- css - Bootstrap-4 下拉菜单会自动获取一些样式。如何禁用它?
- laravel - Laravel 日志,如何检索级别?
- python - 在线发布脚本
- async-await - karma-typescript:使用 Async 关键字导入 JS 文件
- java - SQLite 数据库游标初始化异常
- powershell - Powershell 递归搜索以选择 .txt 文件,然后将所有文件的内容输出到单个 .txt 文件中
- python - Discord.py 机器人无法 ping,有人可以告诉我该怎么做吗?
- image - 使用单应矩阵并将其分解以找到固定在中心的平面的方向
- mysql - 参数 2 中的 JSON 文本无效 - 使用 Spring JPA 的 json_contains