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

上一篇: Foreach loop not updating the values

下一篇: Replacing array value in foreach loop