自动生成数组

时间:2012-02-26 19:27:45

标签: php arrays frameworks drop-down-menu yii

我想在Yii框架中创建一个下拉列表,我有自动生成它的问题

所以我现在有了:

function getYear($value1 = 1900, $value2 = 2008)
{
    $data = array();

    for ($i=value1; $i++; $i<=value2){
        array_push($data,(string)$i);
    }

    return data();
}

<?php echo CHtml::activeDropDownList($model,'yy', getYear()); ?>

它应该是这样的:

<?php echo $form->dropDownList($model, 'field_name', array(1=>'test1', 2=>'test2'));?>

但是我的代码没有用,所以请帮帮我

3 个答案:

答案 0 :(得分:2)

我不熟悉YII框架,但看起来你的函数有一些主要的语法问题。首先,for()循环中的参数顺序错误。此外,您在$$value1变量前面缺少$value2,因此它们被解释为空常量。

如果要返回填充了连续年份的数组,可能需要查看本机range()函数。像这样:

function getYear($value1 = 1900, $value2 = 2008) {
    return range($value1, $value2);
}

答案 1 :(得分:2)

你真的不需要一个单独的函数 - 只需像Joe所示那样使用PHP range()函数。

<?php echo $form->dropDownList($model, 'field_name', range(1900,2008);?>

正如ThiefMaster所说 - 最好不要硬编码这些值,所以也许:

<?php 
$thisyear = date("Y");
echo $form->dropDownList($model, 'field_name', range($thisyear-100,$thisyear);
?>

这假设您的$ form是CActiveForm类的对象

答案 2 :(得分:0)

将您的函数放在一个类中并将其定义为静态函数,以便您也可以在其他地方使用它。然后静态调用该函数。

class example{
  public static function getYear($value1 = 1900, $value2 = 2008)
  {
     $data = array();

     for ($i=value1; $i++; $i<=value2){
         array_push($data,(string)$i);
     }

     return data();
  }
}

<?php echo CHtml::activeDropDownList($model,'yy', example::getYear()); ?>