向数组CakePHP中添加选项


Adding options into array CakePHP

我还有一个问题。我有两个表:1 -用户2 -组。表1中的groupid与表2中的group的id相连接。

我想用下面的代码创建一个选项列表:

echo $this->Form->input('Priority', array(
'label' => 'Group', 
'options' => $groups_array
)); 

现在$group_array看起来应该是

like array('1' => 'Admin', '2' => 'User');

我试图通过此代码推组id和组名称,但它不能正常工作(它添加组与id降低1 -我假设id不是组的id,但名称位置的id在数组$group_array。

$groups_array = array();
foreach($groups as $group):
echo $group['Group']['ID']; echo $group['Group']['Name'];
array_push($groups_array, $group['Group']['ID']=$group['Group']['Name']);
endforeach;

我怎么能解决这个问题?

而不是使用array_push(),因为您打算直接从$group['Group']['ID']设置数组索引,所以在赋值中使用该值作为$groups_array的索引:

$groups_array = array();
foreach ($groups as $group) {
  // assign a new key $group['Group']['ID'] directly
  $groups_array[$group['Group']['ID']] = $group['Group']['Name'];
}

出错的地方如下:

你描述的"减少了一个"问题是有id为1, 2的用户附加到数组的巧合。第一个添加到索引0,第二个添加到索引1。如果数组开始时是非空的,则用户将被附加到数组的末尾。

当你做了

array_push($groups_array, $group['Group']['ID']=$group['Group']['Name']);
PHP设法将Name键分配给现有的ID键,用名称覆盖ID,然后返回该值到array_push()的第二个参数。PHP最终看到的是
array_push($groups_array, 'Admin');
array_push($groups_array, 'User');