我有另一个问题。我必须表:1 - 用户2 - 与组。表与组的id连接 - 表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组,但在数组$ group_array中的名称位置的ID。
$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;
我该如何解决?
答案 0 :(得分:1)
而不是使用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'];
}
您描述的“减少一个”问题与让用户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');