Foreach循环不更新值
我在页面上有几个表单。 在我的视图中呈现它们之前,我使用它们的按钮和元素动态地在PHP中创建它们。 我想动态地调整tabindexes,所以基本上,一旦我在PHP脚本的末尾准备好了所有的表单,我会执行以下操作:
public function fixTabindexes($forms) {
$tabindex = 1;
$forms = count($forms) > 1 ? $forms : [$forms];
foreach($forms as $form) {
foreach($form['form'] as $element) {
$element->setAttrib('tabindex', $tabindex++);
}
foreach($form['buttons'] as $button) {
$button['tabindex'] = $tabindex++;
}
}
return $forms;
}
元素得到完美更新,但按钮没有。 感觉好像第二个foreach - $form['buttons']
没有保存['tabindex']
键和它的值。 但是,如果我在foreach循环中执行var_dump
,它显示正常。
我究竟做错了什么?
根据其他人的评论,我错过了&
$button
旁边,所以它正在制作我的数组的副本,而不是返回它。 所以加入&
,保持了参考和正确地更新我的数组,但后来另一件事我缺少的是相同的- &
与$form
了。
public function fixTabindexes($forms) {
$tabindex = 1;
$forms = count($forms) > 1 ? $forms : [$forms];
foreach($forms as &$form) {
foreach($form['form'] as $element) {
$element->setAttrib('tabindex', $tabindex++);
}
foreach($form['buttons'] as &$button) {
$button['tabindex'] = $tabindex++;
}
}
return $forms;
}
链接地址: http://www.djcxy.com/p/53019.html