从另一个数组中的一个数组获取数据


Getting data from one array in another

我正在尝试重写脚本以提高其性能。目前,它是一个具有多个嵌入式 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"的一个对象在一个索引中。这样,您只需遍历这么多索引。