将选项添加到数组CakePHP中

时间:2014-05-09 15:11:34

标签: php arrays cakephp

我有另一个问题。我必须表: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;

我该如何解决?

1 个答案:

答案 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');