2014-11-26 3 views
0

배열을 반복하면서 특정 값을 증가시킬 때 배열을 수정하려고합니다. 당신은 루프에서 뭐하는배열 값을 수정하는 PHP 배열 참조

 $data = ['traits' => [[['amt' => 1]]]]; 
    var_dump($data['traits']); 

     foreach ($data['traits'] as $key => &$index) { 

     foreach ($index as $key => &$value) { 

      $value['amt'] = $value['amt']++; // This should increment 

      if (in_array($key, $input)) { 
      $i++; 
      $insert["field_".$i] = $key."_1"; 
      } 
     } 
     } 

     var_dump($data['traits']); // SAME AS PREVIOUS VAR_DUMP 
+0

은 다른 변수에 의해 내부 루프에서 $ 키를 교체 배열 구조 또는 샘플 배열 – WisdmLabs

+0

을 제공합니다. 귀하의 경우에는 겹쳐 쓰여지고 의도 한 바가 아닙니다. 그리고 if 절에 $ insert를 설정하고 싶습니까? 당신이 달성하고자하는 것을 설명하십시오. – WeSee

답변

1

은 정의되지 않는다 : 그

$value['amt'] = $value['amt']++; 

결과가 먼저 평가 있는지에 따라 달라집니다. 이 경우 $value['amt']++이 먼저 평가 된 다음 $value['amt']에 다시 할당 된 것 같습니다. 증분의 부작용이 사라집니다. 한편

다음 문은 예상대로 작동합니다

$value['amt']++;