2017-02-09 95 views
0

在n數組中,每個元素都是一個關聯數組,每個子數組上我都想用這個函數推送相同的字段,但它不起作用。推送數組的每個字段PHP

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

您不能這樣做,因爲相同的索引會將新值替換爲較舊的值。備用是: - '$ i = 0; foreach($ data as $ field){$ i] ['button'] =''; $ I ++; }' –

回答

3

你只是編輯的foreach內$field元素,但實際上並沒有編輯原始$data陣列。

A foreach循環通過將每個值複製到臨時變量中工作。

如果你想編輯原始數組,有兩種解決方法:

無論是用引用傳遞的值,使用&:

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

或者使用$key=>$value符號和編輯原始陣列:

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

哦,我得到了我的代碼漏洞。刪除我的答案和+1給你 –

0

由於您的密鑰不是動態的。所以,每次都是壓倒一切的。

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

爲什麼反對投票?請給出理由... – Naincy

+0

奈尼西我不是down-voter,但這是無法解決的問題。閱讀: - '我想用這個函數推動同一個字段的每個子數組'?羅伯託給出的正確答案 –

+0

我希望你明白了我的觀點 –