2012-11-01 14 views
0

在「foreach」循環內引入一些變量引用的問題。爲什麼PHP中的foreach中的變量引用工作方式不同?

這是我的CakePHP的代碼片段: http://pastebin.com/s7qtYahA

第一代碼分配了相同數量的內部「foreach」循環迭代的雙重分配。

但第二個代碼確實一切正常。 任何人都可以請澄清扭曲..?提前致謝。 :)

+0

請寫一個最小的測試用例,並張貼作爲問題本身的一部分。通常,在編寫這個最小的測試用例時,會發現原因/問題。 – 2012-11-01 05:18:03

回答

0

因爲$值已復位/清除使用數組()

<?php 
foreach($fields as &$field){ 
     $fieldValues = $this->controller->DomainFormFieldValue->find('all', array('conditions' => array('domain_form_field_id' => $field['DomainFormField']['id']))); 
     foreach($fieldValues as $fieldValue){ 
       $field['DomainFormFieldValue'][] = $fieldValue['DomainFormFieldValue']; 
     } 
} 
unset($field); 
?> 

2nd code: 
<?php 
foreach($fields as &$field){ 
     $fieldValues = $this->controller->DomainFormFieldValue->find('all', array('conditions' => array('domain_form_field_id' => $field['DomainFormField']['id']))); 

     $values = array(); /* Array has been resetted */ 

     foreach($fieldValues as $fieldValue){ 
       $values[] = $fieldValue['DomainFormFieldValue']; 
     } 
     $field['DomainFormFieldValue'] = $values; 
} 
unset($field); 
?> 
+0

您在第二個代碼中重置了$值,這就是原因。 –

相關問題