我正在尝试重写脚本以提高其性能。目前,它是一个具有多个嵌入式 if 的开关语句。开关检查$type
的值,ifs 检查$unit
的值,然后在 ifs 内部,要回显的线是从 $message
数组构造的。
例如:
switch($type){
case 1234:
if($unit == "a"){
echo "<td>$message[2]</td>
<td>$message[5]</td>
...";
}elseif($unit == "b"){
...
}
...
$message
数组包含所需的所有信息,但根据$type
和$unit
的顺序不同,因此此检查对顺序进行排序。
这会导致页面加载缓慢,尤其是在加载 500+ 条消息时。
我试图优化这一点的是创建一个多维数组,其中所有消息顺序都预先格式化,然后通过以下方式访问它:
echo $format[$type][$unit];
但是由于我需要的数据在$message
数组中,我不知道如何使用这些数据。如果我将$format
声明放在生成$message
数组的同一循环中,这些数组可以通过调用$message[2]
等来工作,但我觉得这会损害性能。
如何动态调用格式设置中的数据?
编辑
澄清一下,
$message
数组是通过分解从数据库中检索的逗号分隔字符串来创建的(我没有创建数据库,我很想修复这样做的方式,但我不能(。
$message
看起来像这样:
$message[2] //TimeStamp1
$message[3] //TimeStamp2
$message[4] //Could be a 1/0 for true/false, could be a float to resemble a necessary value
因此,请根据以下假设运行:对于$type
1234,$message[4]
应检索为 true/false 的 1/0,但对于 $type
5678,$message[4]
应作为浮点数检索,因此:
if($type == 1234){
if($unit = "a"){
echo "<td>$message[2]</td>
<td>$message[3]</td>
<td></td>
<td></td>
<td>$message[4]</td>";
}elseif($unit = "b"){
echo "<td>$message[2]</td>
<td>$message[3]</td>
<td></td>
<td>$message[4]</td>
<td></td>";
}
}elseif($type = 5678){
if($unit = "a"){
echo "<td>$message[2]</td>
<td>$message[3]</td>
<td>$message[4]</td>
<td></td>
<td></td>";
}elseif($unit = "b"){
echo "<td>$message[2]</td>
<td>$message[3]</td>
<td></td>
<td></td>
<td>$message[4]</td>";
}
}
放置$message[4]
(和其他值(的位置取决于$type
和$unit
值。
与其创建一个多维数组,不如简单地创建一个对象数组,这样你就有键/值对,例如"a":messageA,"b":messageB,"c":messageC等,其中带有键"a","b"和"c"的一个对象在一个索引中。这样,您只需遍历这么多索引。