从另一个阵列获取数据

时间:2014-12-11 18:46:58

标签: php arrays

我正在尝试重写脚本以提高它的性能。目前,它是一个带有多个嵌入式ifs的switch语句。交换机检查$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]应该被检索为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值。

1 个答案:

答案 0 :(得分:0)

不是创建一个多维数组,而是简单地创建一个对象数组,使得你有键/值对,例如&#34; a&#34 ;: messageA,&#34; b&#34;:messageB,& #34; c&#34;:messageC等,其中一个对象带有键&#34; a&#34;,&#34; b&#34;和&#34; c&#34;在一个索引中。这样你只需循环这么多索引。