更新数组,其值来自同一个数组

时间:2015-07-07 11:13:49

标签: php arrays

我有一个具有这种结构的数组(这是其中一个条目):

[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]。我错过了什么?

2 个答案:

答案 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的当前元素的值。