Php 试图简化我的if语句
下面的mysqli查询将始终提取一个结果。然而,在看过我的代码之后,我觉得必须有更好的方法来简化状态下拉html部分。正如你所看到的,我有一堆if语句和一个数组。我就是这样做的,这样我就可以将html中的selected设置为当前的下拉视图。谁能帮我简化一下吗Php 试图简化我的if语句,php,arrays,if-statement,foreach,Php,Arrays,If Statement,Foreach,下面的mysqli查询将始终提取一个结果。然而,在看过我的代码之后,我觉得必须有更好的方法来简化状态下拉html部分。正如你所看到的,我有一堆if语句和一个数组。我就是这样做的,这样我就可以将html中的selected设置为当前的下拉视图。谁能帮我简化一下吗 $query = mysqli_query($mysqli, "SELECT * From referrals WHERE id = '".$edit."';"); while($row = mysqli_fetch_array($
$query = mysqli_query($mysqli, "SELECT * From referrals WHERE id = '".$edit."';");
while($row = mysqli_fetch_array($query))
{
$editstatus = $row['status'];
}
if($editstatus == "N")
{
$estatus = "N/A";
}
if($editstatus == "I")
{
$estatus = "Installation Comp";
}
if($editstatus == "SI")
{
$estatus = "Site Inspection";
}
if($editstatus == "S")
{
$estatus = "Sold";
}
if($editstatus == "C")
{
$estatus = "Cancelled";
}
if($editstatus == "P")
{
$estatus = "Press/Follow-Up";
}
if($editstatus == "W")
{
$estatus = "Being Installed";
}
$bstatus[] = "N/A";
$bstatus[] = "Installation Comp";
$bstatus[] = "Site Inspection";
$bstatus[] = "Sold";
$bstatus[] = "Cancelled";
$bstatus[] = "Press/Follow-Up";
$bstatus[] = "Being Installed";
?>
<div class="status"><label for="edit_status">Edit Status</label>
<select id="edit_status" name="edit_status">
<?php
foreach($bstatus as $cstatus) {
if($cstatus == "N/A")
{
$dstatus = "N";
}
if($cstatus == "Installation Comp")
{
$dstatus = "I";
}
if($cstatus == "SI")
{
$dstatus = "Site Inspection";
}
if($cstatus == "Sold")
{
$dstatus = "S";
}
if($cstatus == "Cancelled")
{
$dstatus = "C";
}
if($cstatus == "Press/Follow-Up")
{
$dstatus = "P";
}
if($cstatus == "Being Installed")
{
$dstatus = "W";
}
?>
<option <?php if($cstatus == $estatus) { echo "selected=\"selected\""; } ?> value="<?php echo $dstatus; ?>"><?php echo $cstatus ?></option>
<?php
}
?>
</select>
</div>
正如我提到的,在看过这段代码后,我知道必须有更好的方法来实现这一点,我只是不知道如何实现。任何帮助都将不胜感激。为什么不创建一个PHP EditStatus关联数组来创建Estatus 非常适合交换
使用以下方法之一 方法1 方法2 关联数组也适用
$array = array(
"N" => "N",
"I" => "Installation Comp",
..
..
);
考虑使用开关盒,您可以使用开关语句或联想数组,这种类型的问题更适合于感谢Matt!我没有意识到有一个单独的部分;
$editstatus = $row['status'];
switch ($editstatus)
{
case 'N':
$estatus = 'N/A';
break;
case 'I':
$estatus = 'Installation Comp';
break;
// Fill in the rest here ...
default:
// None of my case statements were matched
break;
}
switch ($editstatus) {
case "N":
$dstatus = "N";
break;
case "I":
$estatus = "Installation Comp"
break;
//rest of your code goes here
}
$array = array(
"N" => "N",
"I" => "Installation Comp",
..
..
);