codeigniter form_dropdown返回错误的值

时间:2014-02-03 06:02:17

标签: codeigniter

我的模特,

function get_partners_name()
{
    $q = $this->db->select("id,fname,lname")
                      ->from('partner');
    $all_partners = $q->get()->result();
    $data = array();
    foreach($all_partners as $partner)
    {
       $data[$partner->id] = $partner->fname.' '.$partner->lname;
    }
    return $data;
}

我的控制器var_dump($ partners)数据是,

array (size=2)
  38 => string 'Mahesh' (length=6)
  40 => string 'Rahul' (length=4)

我的观点,

<?php array_unshift($partners, "-Select-");?>
<?php echo form_dropdown('parnter', $partners,'',''); ?>

所以在下拉列表中我想显示,

<option value='0'>-Select-</option>
<option value='38'>Mahesh</option>
<option value='40'>Rahul</option>

但它显示,

<option value='0'>-Select-</option>
<option value='1'>Mahesh</option>
<option value='2'>Rahul</option>

1 个答案:

答案 0 :(得分:0)

来自PHP手册。

'array_unshift()将传递的元素添加到数组的前面。请注意,元素列表作为整体预先添加,以便前置元素保持相同的顺序。所有数值数组键都将被修改为从零开始计数,而不会触及文字键。'

因此,在使用unshift时,您的密钥会重新编号。

因为永远不应该选择select选项,我建议将其硬编码到视图中。如果您不希望用户选择它,也不要给它一个值。

<select name='foo'>
    <option disabled>-Select-</option>
    <?php
    foreach($partners as $partner){
        echo '<option value="';
        echo $partner->id;
        echo '">';
        echo $partner->name;
        echo '</option>';
    }
    ?>
</select>