Php 是的,表格上有额外的复选框

Php 是的,表格上有额外的复选框,php,checkbox,yii,Php,Checkbox,Yii,我不知道为什么最后一页有一个空白的复选框,这是我的查看表单 <?php echo $form->errorSummary($model); ?> <div class="row"> <?php echo $form->labelEx($model,'peticion_id'); ?> <?php echo $form->textField($model,'peticion_id', ar

我不知道为什么最后一页有一个空白的复选框,这是我的查看表单

    <?php echo $form->errorSummary($model); ?>

    <div class="row">
        <?php echo $form->labelEx($model,'peticion_id'); ?>
        <?php echo $form->textField($model,'peticion_id', array('readOnly'=>'true', 'value'=>$pet)); ?>
        <?php echo $form->error($model,'peticion_id'); ?>
    </div>

    <div>
        <?php echo CHtml::checkBoxList('createCheck', array(), $variable); ?>
    </div>

    <div class="row buttons">
        <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
    </div>


$variable是一个数组,包含我想要呈现的所有复选框,但即使没有数组,它也会生成一个空白复选框,不管是否为数组,最后总是有一个额外的复选框,如何解决这个问题?

因为变量转储($variable)

array (size=3)
 0 => string 'Ph' (length=2)
 1 => string 'clor' (length=4) 
 2 => string '' (length=0)
正如您所看到的,数组中的第三个值是长度为0的
'
。因此,空复选框是因为$variable数组中的这个空值而创建的

因此,如果希望从数组中删除此类值,则在将其发送到视图之前,在控制器操作中使用此

$variable=  array_filter(array_map('trim', $variable));
现在,您可以在呈现表单时安全地发送$variable。

希望您现在不会看到不需要的复选框。

只需执行
$variable=array\u filter($variable)
位于视图顶部(或者更好-在它来自的控制器/模型中),以清除任何将计算为
false

的空值。该行对我来说运行良好,无需任何额外的复选框。请显示变量转储($variable);var_dumb()显示这个数组(size=3)0=>string'Ph'(length=2)1=>string'clor'(length=4)2=>string'(length=0)如果字符串只包含空格,这将不起作用,首先,我不知道为什么会得到一个带有空格或空字符串值的数组,但你当然是对的:)哈哈哈…实际上OP是通过分解一个文件的内容来创建一个数组,这里没有提到。所以有可能在数组中得到一些空格作为值:)现在我意识到是你帮我解决了复选框的早期问题,再次感谢是的,是我。。。很高兴再次见到你:)