【问题标题】:how to make zig-zag number using for in php? [duplicate]如何在 php 中使用 for 制作 zig-zag 数字? [复制]
【发布时间】:2020-09-17 11:16:43
【问题描述】:

我有这个代码

<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>

显示这个 result i don't want to

我想要这样的结果

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

等等……

我不知道最简单的逻辑是如何工作的

【问题讨论】:

  • 如果你使用flexbox而不是表格,你可以按照你当前输出的顺序输出数据,然后使用CSS改变每隔一行的flex-direction

标签: php loops for-loop numbers


【解决方案1】:

我按照以下步骤重写了处理循环前值的代码:

  1. range()创建一个有60个连续位置的数组;
  2. 将数组拆分成块,用值组成一个矩阵;
  3. 对于数组中的每一行,反转奇数索引。

$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>

【讨论】:

  • 这个答案缺少教育解释。仅代码答案在 Stack Overflow 上的价值很低。
  • @mickmackusa 是的,很抱歉。我在工作中在这里快速编写了代码,无法发表评论。我马上就做。感谢您的建议!
  • 没有必要再为您的回答而苦恼。此页面最终将被删除,因为副本提供了一个很好的干净工作解决方案(实际上是相同的解决方案)。
  • 当然可以。我在这里留下我的解释只是为了澄清 OP。
  • 谢谢这对我有很大帮助,我能理解谢谢
猜你喜欢
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-05
  • 2020-02-28
相关资源
最近更新 更多