Php 试图简化我的if语句

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($

下面的mysqli查询将始终提取一个结果。然而,在看过我的代码之后,我觉得必须有更好的方法来简化状态下拉html部分。正如你所看到的,我有一堆if语句和一个数组。我就是这样做的,这样我就可以将html中的selected设置为当前的下拉视图。谁能帮我简化一下吗

$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",
    ..
    ..
);