php - 当下一个值与前一个值不同时更改单元格的背景颜色

标签 php html mysql

我已经在 Stack 上工作多年,但这是我第一次发帖。我在一个网站 (php + mysql) 上工作,下面的问题让我非常抓狂。

我有一个包含 2 列的表格:大小和金额。该表是由一个基本的 php 脚本生成的,它只是将存储在数据库中的值作为表中的行输出。 super 基础,没有花哨的东西:

SELECT Size, Amount FROM database WHERE product = 'product123' ORDER BY Size ASC

php echo 输出一个 html 表,显示大小和相应的可用包(数量)。

Echo '<td>'.$record['size'].'</td><td>'.$record['amount'].'</td>'

一些尺码有不同的数量,因此一个特定的尺码可以出现多次。示例:

Size | Amount
1    | 10
1    | 50
2    | 10
2+   | 10
3    | 40
3+   | 25
3+   | 40
4+   | 25

我想要实现的是包含相同大小的行具有相同的背景颜色。因此它应该交替,按大小分组,不幸的是这是不规则的。示例:

Size | Amount
1    | 10     < yellow
1    | 50     < yellow
2    | 10     < transparent
2+   | 10     < yellow
3    | 40     < transparent
3+   | 25     < yellow
3+   | 40     < yellow
4+   | 25     < transparent

因此,如果下一个 Size 与前一个不同,则行背景颜色应该更改。通过这种方式,单个尺寸交替突出显示为一个组。请注意,2 号和 2+ 号(3 号和 3+ 号相同)被认为是不同的尺寸,因此背景颜色应该改变。

我不知道如何用 php 实现这个。困难在于我不能使用基于奇数/偶数的评估,因为有时会涉及“+”,而不是所有尺寸的数值。 不幸的是,更改命名方案以摆脱“+”并不是一种选择。

我正在考虑以某种方式让 php 检查,同时逐行生成表,如果下一个输出的大小与前一个相同。如果是:bg-color 没有变化。如果否:更改 bg-color。但是我无法弄清楚编写这样的代码的最佳方法是什么。非常感谢任何指向正确方向的指示。

最佳答案

只是一个MCVE :

// your data
$records[] = array('size' => "1");
$records[] = array('size' => "1");
$records[] = array('size' => "2");
$records[] = array('size' => "2+");
$records[] = array('size' => "3");
$records[] = array('size' => "3+");
$records[] = array('size' => "3+");
$records[] = array('size' => "4");

$lastSize = $records[0]['size'];
$color = "yellow";

foreach ($records as $record) {
    if ($lastSize != $record['size']) {
        $lastSize = $record['size'];
        if ($color == "yellow") $color = "transparent";
        else $color = "yellow";
    }
    $lastSize == $record['size'];
    echo $record['size'].' - '.$color.'<br>';
}

// OUTPUT:
// 1 - yellow
// 1 - yellow
// 2 - transparent
// 2+ - yellow
// 3 - transparent
// 3+ - yellow
// 3+ - yellow
// 4 - transparent

关于php - 当下一个值与前一个值不同时更改单元格的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32752068/

相关文章:

php - Symfony Doctrine 查询生成器 LIKE 在 PostgreSQL 中不起作用

php - 在 PHP 变量前面添加 & 符号的实际用途

html - 如何将2个div一个放在另一个旁边

php - 获取当前年份和下一个表单 mysql

php - 仅登录一次请求,刷新后退出

php - 在“我的帐户”>“在 WooCommerce 中编辑帐户”上添加带有验证的单选按钮

html - CSS - 当链接的 img 显示 : block 时事件链接断开

Javascript 获取选定值返回 'undefined'

mysql - 使用 group by with where 子句时出错

php - 组合唯一的 MySQL 表