我有一个具有这种结构的数组(这是其中一个条目):
[11] => Array
(
[id_cred] => CD000000905
[gbv_tot] => 482197.51
[ammesso] => 482197.51
[tipo] => 1
[importo] => 0
[stato] => aperta
)
我在foreach中遍历它,根据某些条件将[importo]设置为等于[gbv_tot]或[ammesso]。我写了这段代码但似乎没有更新密钥[importo]的值。
foreach($creds as $cred){
if(($cred['tipo'] == '1')&&($tipo_az == 'conc')){
//sto elaborando un chirografo in una azione concorsuale quindi prendo il nominale
if($cred['stato']=='aperta'){
$gbv_compl = $gbv_compl + $cred['ammesso'];
$cred['importo'] = $cred['ammesso'];
}else{
$cred['importo'] = 0;
}
}else{
//sto elaborando qualcosa d'altro e quindi prendo il GBV
if($cred['stato']=='aperta'){
$gbv_compl = $gbv_compl + $cred['gbv_tot'];
$cred['importo'] = $cred['gbv_tot'];
}else{
$cred['importo'] = 0;
}
}
}
我认为这不是正确的方法,因为我无法更新[importo]。我错过了什么?
答案 0 :(得分:5)
更改此行,
foreach($creds as $cred){
到
foreach($creds as &$cred){ // pass $cres 's value by reference
现在,对$cred
的更改将应用于您的数组
答案 1 :(得分:3)
foreach($creds as $cred){
$cred
不会引用主array
。对于每次迭代,它会将当前元素分配给$cred
。您需要使用key
-
foreach($creds as $key => $cred){
并将值设置为 -
$creds[$key]['importo'] = 'whatever value it is';
为了能够直接修改循环中的数组元素,在$ value之前加上&amp ;.在这种情况下,该值将通过引用分配。
foreach ($creds as &$cred) {
使用参考,您可以直接更新它们。现在 -
$cred['importo'] = 0;
将更改主array
的当前元素的值。