2017-02-09 96 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

我希望你明白了我的观点 –