首页 > 解决方案 > 如何用 PHP 处理大选择(数组、循环或随意)

问题描述

我对网站上的大选择框感到两难。如果我有一个包含 300 多个选项的选择框,我应该使用数组、循环还是只添加每个选项?

我必须使用 for 循环函数稍后指定用户是否选择了此选项(检查 MySQLi 数据库)。

我关心代码的速度。

选项 1 - 休闲代码:

<optgroup label='{$lang['c_010']}'>
  <option value='{$i_array_value[0]}' ".($g_interests_row_0 == 1 ? 'selected' : '').">{$i_array_name[0]}/option>
  <option value='{$i_array_value[1]}' ".($g_interests_row_1 == 1 ? 'selected' : '').">{$i_array_name[1]}/option>
  <option value='{$i_array_value[2]}' ".($g_interests_row_2 == 1 ? 'selected' : '').">{$i_array_name[2]}/option>
  <option value='{$i_array_value[3]}' ".($g_interests_row_3 == 1 ? 'selected' : '').">{$i_array_name[3]}/option>
    <option $p_2_t data-subtext='{$lang['c_015']}' disabled></option>
      <option value='{$i_array_value[4]}' ".($g_interests_row_4 == 1 ? 'selected' : '').">{$i_array_name[4]}/option>
      <option value='{$i_array_value[5]}' ".($g_interests_row_5 == 1 ? 'selected' : '').">{$i_array_name[5]}/option>
      <option value='{$i_array_value[6]}' ".($g_interests_row_6 == 1 ? 'selected' : '').">{$i_array_name[6]}/option>
  <option value='{$i_array_value[7]}' ".($g_interests_row_7 == 1 ? 'selected' : '').">{$i_array_name[7]}/option>
  <option value='{$i_array_value[8]}' ".($g_interests_row_8 == 1 ? 'selected' : '').">{$i_array_name[8]}/option>
    <option $p_2_t data-subtext='{$lang['c_021']}' disabled></option>
      <option value='{$i_array_value[9]}' ".($g_interests_row_9 == 1 ? 'selected' : '').">{$i_array_name[9]}/option>
      <option value='{$i_array_value[10]}' ".($g_interests_row_10 == 1 ? 'selected' : '').">{$i_array_name[10]}/option>
      <option value='{$i_array_value[11]}' ".($g_interests_row_11 == 1 ? 'selected' : '').">{$i_array_name[11]}/option>
  <option value='{$i_array_value[12]}' ".($g_interests_row_12 == 1 ? 'selected' : '').">{$i_array_name[12]}/option>
  <option value='{$i_array_value[13]}' ".($g_interests_row_13 == 1 ? 'selected' : '').">{$i_array_name[13]}/option>
  <option value='{$i_array_value[14]}' ".($g_interests_row_14 == 1 ? 'selected' : '').">{$i_array_name[14]}/option>
  <option value='{$i_array_value[15]}' ".($g_interests_row_15 == 1 ? 'selected' : '').">{$i_array_name[15]}/option>
  <option value='{$i_array_value[16]}' ".($g_interests_row_16 == 1 ? 'selected' : '').">{$i_array_name[16]}/option>
  <option value='{$i_array_value[17]}' ".($g_interests_row_17 == 1 ? 'selected' : '').">{$i_array_name[17]}/option>
  <option value='{$i_array_value[18]}' ".($g_interests_row_18 == 1 ? 'selected' : '').">{$i_array_name[18]}/option>
    <option $p_2_t data-subtext='{$lang['c_033']}' disabled></option>
      <option value='{$i_array_value[19]}' ".($g_interests_row_19 == 1 ? 'selected' : '').">{$i_array_name[19]}/option>
      <option value='{$i_array_value[20]}' ".($g_interests_row_20 == 1 ? 'selected' : '').">{$i_array_name[20]}/option>
      <option value='{$i_array_value[21]}' ".($g_interests_row_21 == 1 ? 'selected' : '').">{$i_array_name[21]}/option>
      <option value='{$i_array_value[22]}' ".($g_interests_row_22 == 1 ? 'selected' : '').">{$i_array_name[22]}/option>
      <option value='{$i_array_value[23]}' ".($g_interests_row_23 == 1 ? 'selected' : '').">{$i_array_name[23]}/option>
      <option value='{$i_array_value[24]}' ".($g_interests_row_24 == 1 ? 'selected' : '').">{$i_array_name[24]}/option>
      <option value='{$i_array_value[25]}' ".($g_interests_row_25 == 1 ? 'selected' : '').">{$i_array_name[25]}/option>
      <option value='{$i_array_value[26]}' ".($g_interests_row_26 == 1 ? 'selected' : '').">{$i_array_name[26]}/option>
      <option value='{$i_array_value[27]}' ".($g_interests_row_27 == 1 ? 'selected' : '').">{$i_array_name[27]}/option>
      <option value='{$i_array_value[28]}' ".($g_interests_row_28 == 1 ? 'selected' : '').">{$i_array_name[28]}/option>
    <option $p_2_t data-subtext='{$lang['c_044']}' disabled></option>
      <option value='{$i_array_value[29]}' ".($g_interests_row_29 == 1 ? 'selected' : '').">{$i_array_name[29]}/option>
      <option value='{$i_array_value[30]}' ".($g_interests_row_30 == 1 ? 'selected' : '').">{$i_array_name[30]}/option>
      <option value='{$i_array_value[31]}' ".($g_interests_row_31 == 1 ? 'selected' : '').">{$i_array_name[31]}/option>
      <option value='{$i_array_value[32]}' ".($g_interests_row_32 == 1 ? 'selected' : '').">{$i_array_name[32]}/option>
  <option value='{$i_array_value[33]}' ".($g_interests_row_33 == 1 ? 'selected' : '').">{$i_array_name[33]}/option>
  <option value='{$i_array_value[34]}' ".($g_interests_row_34 == 1 ? 'selected' : '').">{$i_array_name[34]}/option>
  <option value='{$i_array_value[35]}' ".($g_interests_row_35 == 1 ? 'selected' : '').">{$i_array_name[35]}/option>
  <option value='{$i_array_value[36]}' ".($g_interests_row_36 == 1 ? 'selected' : '').">{$i_array_name[36]}/option>
  <option value='{$i_array_value[37]}' ".($g_interests_row_37 == 1 ? 'selected' : '').">{$i_array_name[37]}/option>
</optgroup>

选项 2 - For 循环:

  for ($j = 0; $j < 367; $j++) {

    $interests_rows = 'g_interests_row_'.$j;
    $demographics_rows = 'g_demographics_row_'.$j;

    $$interests_rows = $db->QueryGetNumRows("$modules_rows_count FIND_IN_SET('".$i_array_value[$j]."', interests)");
    $$demographics_rows = $db->QueryGetNumRows("$modules_rows_count FIND_IN_SET('".$d_array_value[$j]."', demographics)");


    if ($j == 0) {
      echo "<optgroup label='{$lang['c_010']}'>";
    } elseif ($j <= 4) {
      echo $am_sh_di_1;
    } elseif ($j == 5) {
      echo "<option $p_2_t data-subtext='{$lang['c_015']}' disabled></option>";
    } elseif ($j <= 8) {
      echo $am_sh_di_1;
    } elseif ($j <= 10) {
      echo $am_sh_di_2;
    } elseif ($j == 11) {
      echo "<option $p_2_t data-subtext='{$lang['c_021']}' disabled></option>";
    } elseif ($j <= 14) {
      echo $am_sh_di_1;
    } elseif ($j <= 22) {
      echo $am_sh_di_2;
    } elseif ($j == 23) {
      echo "<option $p_2_t data-subtext='{$lang['c_033']}' disabled></option>";
    } elseif ($j <= 33) {
      echo $am_sh_di_1;
    } elseif ($j == 34) {
      echo "<option $p_2_t data-subtext='{$lang['c_044']}' disabled></option>";
    } elseif ($j <= 38) {
      echo $am_sh_di_1;
    } elseif ($j <= 43) {
      echo $am_sh_di_2;
    } elseif ($j == 44) {
      echo '</optgroup>';
    }

    if ($j >= count($d_array_value)) {
      $r_interests = ${"g_interests_row_".($j - count($d_array_value)).""};
    } else {
      $r_demographics = ${"g_demographics_row_$j"};
    }

  }

选项 3 - 数组(与选项 1 几乎相同):

$test = array(
  "<optgroup label='{$lang['c_010']}'>",
  array(
    "<option value='{$i_array_value[0]}' ".($g_interests_row_0 == 1 ? 'selected' : '').">{$i_array_name[0]}/option>",
    "<option value='{$i_array_value[1]}' ".($g_interests_row_1 == 1 ? 'selected' : '').">{$i_array_name[1]}/option>",
    "<option value='{$i_array_value[2]}' ".($g_interests_row_2 == 1 ? 'selected' : '').">{$i_array_name[2]}/option>",
    "<option value='{$i_array_value[3]}' ".($g_interests_row_3 == 1 ? 'selected' : '').">{$i_array_name[3]}/option>",
    array(
      "<option $p_2_t data-subtext='{$lang['c_015']}' disabled></option>",
      array(
        "<option value='{$i_array_value[4]}' ".($g_interests_row_0 == 1 ? 'selected' : '').">{$i_array_name[4]}/option>",
        ...
      )
    )
  )
)

我应该怎么做?

标签: phparraysfor-loopselecthtml-select

解决方案


推荐阅读