Spingi su each field di un arrays PHP

Nell'arrays n che each elemento è un arrays associativo, su each arrays figlio voglio spingere lo stesso field con questa function, ma non funziona.

function setButton($data){ foreach ($data as $field) { $field['button'] = '<input data-id="'.$field['id'].'" type="submit">'; } return $data; } 

Si stanno solo modificando gli elementi $field all'interno del foreach, ma in realtà non si sta modificando l'arrays $data originale.

Un ciclo foreach funziona copiando ciascun valore in una variabile temporanea.

Se si desidera modificare l'arrays originale, si hanno due soluzioni:

O passa il valore con un riferimento, usando &:

 foreach ($data as &$field) { $field['button'] = '<input data-id="'.$field['id'].'" type="submit">'; } 

Oppure usa la notazione $key=>$value e modifica l'arrays originale:

 foreach ($data as $key => $field) { $data[$key]['button'] = '<input data-id="'.$field['id'].'" type="submit">'; } 

Poiché la tua chiave non è dynamic. Quindi, è each volta imperativo.

 function setButton($data){ foreach ($data as $field) { $field[]['button'] = '<input data-id="'.$field['id'].'" type="submit">'; } return $data; }