【问题标题】:How do I create an array for a range of values with keys using php?如何使用 php 为带有键的一系列值创建一个数组?
【发布时间】:2011-11-22 13:49:04
【问题描述】:

我正在使用 CodeIgniter。我想创建一个数组以添加到包含数字 1 -> 1000 的下拉列表中。

我试过phprange()这样的函数

$arr = range(1,1000);

它工作并创建了一个从 1 到 1000 的下拉列表。


我确实有一个问题。

当从我的下拉列表中选择文本1 并发布时,发布值为0。 因为默认情况下,键从0 开始,并且键设置为下拉值

这是我的下拉 HTML 的一部分

<select id="user-day" class="dropdown-small Verdana11-424039" tabindex="123456" name="days_of_month">
<option value="0">1</option>
<option value="1">2</option>
<option value="2">3</option>
<option value="3">4</option>
<option value="4">5</option>
<option value="5">6</option>
<option value="6">7</option>

有什么方法可以用键值定义range()

这样的值会变成

<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>

【问题讨论】:

    标签: php codeigniter drop-down-menu


    【解决方案1】:

    这将使用array_combine 正确形成您的数组:

    $array = array_combine( range(1,1000), range(1,1000));
    

    【讨论】:

      【解决方案2】:

      您可以按照相同的方式创建一个数组,只需稍微扩大范围,然后取消设置第 0 个元素。

      $arr = range(0,1000);
      unset($arr[0]);
      

      【讨论】:

      • 这会破坏第一个数组,所以改为 1000 列表选项你只会得到 999
      • 是的,它会破坏数组的第 0 个元素,但 range(0,1000) 包含在内 - 它生成的数组将有 1001 个元素,因此取消设置第 0 个元素会留下 1000 个元素,1 -1000.
      • 但是如果范围以50开头,那就错了。
      • @WallaceMaxters 嗯,是的,那么这个答案将是错误的,因为您所说的不是原始问题。不错的 4 年以上死灵评论,顺便说一句。
      【解决方案3】:

      另一种方法是通过循环创建数组:

      for ($i = 1; $i <= 1000; $i++)
          $arr[$i] = $i;
      

      【讨论】:

        【解决方案4】:

        根本不要使用value 属性。
        因此,表格将改为向您发送选项。

        【讨论】:

          【解决方案5】:

          可以使用老式的 for 循环;

          for ($i=1; $i <= 1000; $i++) {
             $arr[$i] = $i; 
          }
          print_r($arr);
          

          或者只是调整表单填充

          $arr = range(1,10);
          print_r($arr);
          echo '<select>';
          foreach ($arr as $a) {
             $value = $a+1;
             echo '<option value=\"'.$value.'">'.$a.'</option><br />';
          }
          echo '</select>';
          

          【讨论】:

            【解决方案6】:

            使用以下代码

            <select id="user-day" class="dropdown-small Verdana11-424039" tabindex="123456" name="days_of_month">
            <?php for ($i=0; $i <= 1000; $i++) { ?>
             <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
            <? } ?>
            

            【讨论】:

              猜你喜欢
              • 2019-03-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-10-08
              • 2023-01-25
              • 2016-02-26
              • 2011-01-19
              相关资源
              最近更新 更多