Php 从一个数组中获取另一个数组中的数据
我正试图重写一个脚本来提高它的性能。目前,它是一个包含多个嵌入式ifs的switch语句。开关检查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&
$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>";
}
}