我如何创建一个数组的值与键的范围使用php


How do I create an array for a range of values with keys using php?

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

我已经尝试了php range()函数,像这样

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

使用array_combine:

可以正确地组成数组
$array = array_combine( range(1,1000), range(1,1000));

你可以用同样的方法创建一个数组,只是把范围扩大一点,然后取消第0个元素的设置。

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

可以使用老式的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>';

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

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

完全不要使用value属性。
表单会给你发送选项。

使用以下代码

<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>
<? } ?>