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

Php 从一个数组中获取另一个数组中的数据,php,arrays,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&

我正试图重写一个脚本来提高它的性能。目前,它是一个包含多个嵌入式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
数组中,我不知道如何使用这些数据。如果我将
$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>";
    }
}
if($type==1234){
如果($unit=“a”){
echo“$message[2]
$message[3]
$message[4]”;
}elseif($unit=“b”){
echo“$message[2]
$message[3]
$message[4]
";
}
}elseif($type=5678){
如果($unit=“a”){
echo“$message[2]
$message[3]
$message[4]
";
}elseif($unit=“b”){
echo“$message[2]
$message[3]
$message[4]”;
}
}

放置
$message[4]
(和其他值)的位置取决于
$type
$unit
值。

不创建多维数组,只需创建一个对象数组,使您具有键/值对,例如“a”:messageA,“b”:messageB,“c”:messageC等。其中一个对象带有键“a”,“b”和“c”在一个索引中。这样,你只需要循环使用这么多索引。

数组是如何创建的?从数据库中,一个文件?在数组中循环500个元素本身不应该是一个瓶颈。@JasonMcCreary我在我的问题中添加了一个编辑,解释它的起源。500多个项目根本不多……给我们一个真实的(简短的)答案您的源字符串的示例,并为我们提供您想要的示例have@Konstantin我给出了一个例子,说明了我们得到了什么以及它是如何输出的,尽管为此我更改了ifs的开关。
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>";
    }
}