数组操作创建一个下拉框cakephp

时间:2010-06-25 11:15:27

标签: php cakephp

这是我的问题 我要从表状态('id','state_name')创建一个下拉列表框,这不是我的默认模型(它有很多字段,其中一个字段是'state',其中我存储状态('id' )。 所以我用loadModel来填充下拉框。 在我使用的控制器中

$this->loadModel('State');
$this->set('states',$this->State->find('all'));

在视图方面

$form->select('State_id',$states);

在输出中显示表名,id和名称。

当我使用pr()打印$ states时; 我得到的是

Array
(
    [0] => Array
        (
            [State] => Array
                (
                    [id] => 1
                    [state_name] => state1
               )

        )

    [1] => Array
        (
            [State] => Array
                (
                    [id] => 2
                    [state_name] => state2
                )

        )

等等

如何从上面的数组创建一个类似数组的数组(1 => state1,2 => state2) 或者有没有其他方法来创建下拉列表框

请帮助

2 个答案:

答案 0 :(得分:1)

以下代码将从原始数组

创建您想要的数组
$newstates = array();

foreach($states as $state) {
    $state = $state['State']
    $newstates[$state['id']] = $state['state_name'];
}

print_r($newstates);

结果:

Array
(
    [1] => state1
    [2] => state2
)

答案 1 :(得分:1)

这是方式:

$fields = array('id','state_name');
$states = $this->State->find('list',array('fields'=>$fields));
$this->set(compact('states'));

或一行:

$this->set('states',$this->State->find('list',array('fields'=>array('id','state_name'))));