为什么PHP中的foreach内部的变量引用工作方式不同?

时间:2012-11-01 05:08:55

标签: cakephp foreach pass-by-reference

在“foreach”循环内变量引用时遇到一些问题。

这是我的CakePHP代码段: http://pastebin.com/s7qtYahA

第一个代码为相同数量的内部“foreach”循环迭代分配双重赋值。

但是第二个代码确实一切正常。 任何人都可以澄清扭曲..?提前致谢。 :)

1 个答案:

答案 0 :(得分:0)

因为$ values已使用array()重置/清除

<?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);
?>