Foreach loop not updating the values
I've for a few forms on the page. Before rendering them in my views, I create them dynamically in PHP with their buttons and elements. I want to adjust the tabindexes dynamically, so basically once I have all the forms ready at the end of the PHP script, I do the following:
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;
}
 Elements get updated perfectly, but buttons don't.  It feels as if the second foreach - $form['buttons'] is not saving the ['tabindex'] key and it's value.  However, if I do a var_dump inside the foreach loop, it shows up fine.  
What am I doing wrong?
 As per comments by others, I was missing & next to $button so it was making a copy of my array and not returning it.  So adding & , kept the references and updated my array properly, BUT then another thing I was missing was the same - & with $form too.  
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循环内添加循环的PHP foreach
下一篇: Foreach循环不更新值
