我还有一个问题。我有两个表: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');