如何为视图中的非唯一记录设置相同的颜色
How to set same color for non unique records in view
如果 table 行中的相同数据在视图中显示红色,我正在尝试创建。
<tbody>
<?php
$i = 1;
foreach ($data as $item) :
?>
<tr>
<td>
<?php
$text = $item->serial;
if ($text == $text) {
echo '<span class="text-danger">' . $text . '</span>';
} else {
echo '<span class="text-success">' . $text . '</span>';
}
?>
</td>
</tr>
<?php
endforeach;
?>
</tbody>
您需要通过循环来计算序列号,并将serial
设置为键。如果键再次出现,请增加它。循环显示数据时,如果serial
计数大于1
,则进入red
,否则为黑色。
片段:
<tbody>
<?php
$i = 1;
$serial_count = [];
foreach($data as $item):
$serial_count[$item->serial] = (isset($serial_count[$item->serial]) ? $serial_count[$item->serial] : 0) + 1;
endforeach;
foreach ($data as $item) :
?>
<tr>
<td>
<?php
$text = $item->serial;
if ($serial_count[$text] > 1) {
echo '<span class="text-danger">' . $text . '</span>';
} else {
echo '<span class="text-success">' . $text . '</span>';
}
?>
</td>
</tr>
<?php
endforeach;
?>
</tbody>
您不需要使用自己的计数技术,只需隔离 serial
列数据,然后调用 array_count_values()
。然后,您便拥有了在标记中编写颜色样式条件所需的所有信息。
我建议 printf()
以提高代码段的可读性。
虽然text-
在class名字中重复出现,但我不喜欢拆分class名字以节省字符。这样一来,当你想用你的 IDE 搜索你的项目时 text-success
,你不会错过这个。
代码:(Demo)
$data = [
(object)['serial' => 4444, 'note' => '-'],
(object)['serial' => 4444, 'note' => 'information'],
(object)['serial' => 111, 'note' => '-'],
];
$serialCounts = array_count_values(array_column($data, 'serial'));
foreach ($data as $obj) {
printf(
'<span class="%s">%s</span>',
$serialCounts[$obj->serial] > 1 ? 'text-danger' : 'text-success',
$obj->serial
);
}
输出:
<span class="text-danger">4444</span>
<span class="text-danger">4444</span>
<span class="text-success">111</span>
如果 table 行中的相同数据在视图中显示红色,我正在尝试创建。
<tbody>
<?php
$i = 1;
foreach ($data as $item) :
?>
<tr>
<td>
<?php
$text = $item->serial;
if ($text == $text) {
echo '<span class="text-danger">' . $text . '</span>';
} else {
echo '<span class="text-success">' . $text . '</span>';
}
?>
</td>
</tr>
<?php
endforeach;
?>
</tbody>
您需要通过循环来计算序列号,并将serial
设置为键。如果键再次出现,请增加它。循环显示数据时,如果serial
计数大于1
,则进入red
,否则为黑色。
片段:
<tbody>
<?php
$i = 1;
$serial_count = [];
foreach($data as $item):
$serial_count[$item->serial] = (isset($serial_count[$item->serial]) ? $serial_count[$item->serial] : 0) + 1;
endforeach;
foreach ($data as $item) :
?>
<tr>
<td>
<?php
$text = $item->serial;
if ($serial_count[$text] > 1) {
echo '<span class="text-danger">' . $text . '</span>';
} else {
echo '<span class="text-success">' . $text . '</span>';
}
?>
</td>
</tr>
<?php
endforeach;
?>
</tbody>
您不需要使用自己的计数技术,只需隔离 serial
列数据,然后调用 array_count_values()
。然后,您便拥有了在标记中编写颜色样式条件所需的所有信息。
我建议 printf()
以提高代码段的可读性。
虽然text-
在class名字中重复出现,但我不喜欢拆分class名字以节省字符。这样一来,当你想用你的 IDE 搜索你的项目时 text-success
,你不会错过这个。
代码:(Demo)
$data = [
(object)['serial' => 4444, 'note' => '-'],
(object)['serial' => 4444, 'note' => 'information'],
(object)['serial' => 111, 'note' => '-'],
];
$serialCounts = array_count_values(array_column($data, 'serial'));
foreach ($data as $obj) {
printf(
'<span class="%s">%s</span>',
$serialCounts[$obj->serial] > 1 ? 'text-danger' : 'text-success',
$obj->serial
);
}
输出:
<span class="text-danger">4444</span>
<span class="text-danger">4444</span>
<span class="text-success">111</span>