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; }