【问题标题】:generating array automatically自动生成数组
【发布时间】:2012-02-26 19:27:44
【问题描述】:

我想在 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'));?>

但是我的代码不起作用所以请帮助我

【问题讨论】:

  • 我希望这不是生日。如果是:请不要硬编码年份。在 15 年内,出生于 2008 年的人可能会很好地使用您的网站,而且很有可能没有人记得更新过硬编码的年份。但当然,该网站将不再存在或至少在 15 年内被重写一次的可能性也很大。
  • 我是这个网站的所有者,所以我会每年更新它。我需要解决这个问题,所以请帮助我

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


【解决方案1】:

您真的不需要单独的函数 - 只需使用 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】:

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

    如果您想返回一个包含连续年份的数组,您可能需要查看本机 range() 函数。像这样:

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

    【讨论】:

      【解决方案3】:

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

      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()); ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-19
        相关资源
        最近更新 更多