我创建了一个热图函数,我将使用它来使用 PHP 7.2 填充 html 表格的单元格。这是我的功能:function bg($latency) { if ($latency ==0) {echo '#11FFFF';} elseif ($latency <30) {echo '#22FFFF';} elseif ($latency <60) {echo '#33FFFF';} elseif ($latency <90) {echo '#44FFFF';} elseif ($latency <120) {echo '#55FFFF';} elseif ($latency <150) {echo '#66FFFF';} elseif ($latency <180) {echo '#77FFFF';} elseif ($latency <210) {echo '#88FFFF';} elseif ($latency <240) {echo '#99FFFF';} elseif ($latency <270) {echo '#AAFFFF';} elseif ($latency <300) {echo '#BBFFFF';} elseif ($latency >=300) {echo '#CCB27F';} }我使用简单的 select 语句从 MySQL 表中提取值,然后尝试使用以下代码片段构建表:while($row = mysqli_fetch_assoc($result)) { echo '<tr><td>'.$row['origin'].'</td><td bgcolor='.bg($row['lt01']).'>'.$row['lt01'].'</td></tr>';}但由于某种原因,输出出现乱码,函数输出出现在 HTML 源代码之前:#11FFFF<tr><td>LT01</td><td bgcolor=>0</td></tr>#22FFFF<tr><td>LT02</td><td bgcolor=>11</td></tr>#44FFFF<tr><td>LT03</td><td bgcolor=>62</td></tr>#44FFFF<tr><td>LT04</td><td bgcolor=>74</td></tr>#99FFFF<tr><td>LT05</td><td bgcolor=>214</td></tr>我一生都无法弄清楚这一点。
1 回答
大话西游666
TA贡献1817条经验 获得超14个赞
这是因为您的bg
函数将颜色代码回显到屏幕,而不是返回它以供其他 PHP 代码使用。return
更改要使用的函数echo
,它将按预期工作。
function bg($latency) { if ($latency == 0) {return '#11FFFF';} elseif ($latency < 30) {return '#22FFFF';} elseif ($latency < 60) {return '#33FFFF';} elseif ($latency < 90) {return '#44FFFF';} elseif ($latency < 120) {return '#55FFFF';} elseif ($latency < 150) {return '#66FFFF';} elseif ($latency < 180) {return '#77FFFF';} elseif ($latency < 210) {return '#88FFFF';} elseif ($latency < 240) {return '#99FFFF';} elseif ($latency < 270) {return '#AAFFFF';} elseif ($latency < 300) {return '#BBFFFF';} elseif ($latency >= 300) {return '#CCB27F';} }
echo
当您想立即在屏幕上显示内容时使用。由于 PHP 解析器的工作方式,函数echo
中的bg
会在echo
调用该函数的 之前运行,因为父级echo
尚未完成。这就是return
发挥作用的地方。它不是立即将内容打印到屏幕上,而是将其传递回任何调用的函数,以便以您希望的任何方式使用。
- 1 回答
- 0 关注
- 67 浏览
添加回答
举报
0/150
提交
取消