我創建了一個熱圖函數,我將使用它來使用 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 關注
- 103 瀏覽
添加回答
舉報
0/150
提交
取消