数组内的IF条件

时间:2013-01-29 13:44:24

标签: php yii

尝试在if内使用array条件,但它不起作用。我该如何解决这个问题?

代码:

public function behaviors()
{
    return array(
        'withRelated'=>array(
            'class'=>'ext.wr.WithRelatedBehavior',
        ),
        Yii::app()->controller->id != 'apiv1' ?
        'datetimeI18NBehavior'=>array(
            'class' => 'ext.DateTimeI18NBehavior',
        ), : false,
    );
}

错误:

Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW) in .../models/Users.php on line 77

3 个答案:

答案 0 :(得分:5)

这是解决问题的正确方法。

public function behaviors()
{
    $arr = array(
        'withRelated'=>array(
            'class'=>'ext.wr.WithRelatedBehavior',
        )        
    );
    $bool = Yii::app()->controller->id != 'apiv1' ? true : false;
    if($bool) {
        $arr['datetimeI18NBehavior'] = array(
            'class' => 'ext.DateTimeI18NBehavior',
        );
    } else {
        $arr[] = false;
    }
}

答案 1 :(得分:2)

尝试:

'datetimeI18NBehavior' => ( Yii::app()->controller->id != 'apiv1' ) ? array(
    'class' => 'ext.DateTimeI18NBehavior',
) : false,

其他(非常明确的)解决方案:

public function behaviors()
{
    $behaviors = array(
        'withRelated'=>array(
            'class'=>'ext.wr.WithRelatedBehavior',
        )
    );

    if ( Yii::app()->controller->id != 'apiv1' ) {
         $behaviors['datetimeI18NBehavior'] = array(
            'class' => 'ext.DateTimeI18NBehavior'
        );
    }

    return $behaviors;
}

答案 2 :(得分:0)

public function behaviors() {
return array(
'withRelated'=>array(
'class'=>'ext.wr.WithRelatedBehavior',
),
Yii::app()->controller->id != 'apiv1' ?
'datetimeI18NBehavior'=>array(
'class' => 'ext.DateTimeI18NBehavior',
) : false,
);
}

删除括号后的逗号