我在以下 foreach 循环中遇到了一些奇怪的行为。我在 PHP 5.3.0 上运行它。
print_r($this->form_spec['fields']);
foreach($this->form_spec['fields'] as $f=>$field) {
print_r($this->form_spec['fields']);
}
第一个 print_r 打印以下内容(注意:我排除了一堆键以使我的观点更清楚):
Array
(
[0] => Array
(
[field_name] => d_first_name
)
[1] => Array
(
[field_name] => d_last_name
)
)
第二个print_r
打印:
Array
(
[0] => Array
(
[field_name] => d_first_name
)
[1] => Array
(
[field_name] => d_first_name
)
)
$this->form_spec['fields'] 在到达 for each 循环之前已经有了它的值。第一个 print_r 显示正确的值。然后第二个 print_r 显示值已更改。这些之间没有其他代码。
这可能是 5.3.0 中的错误吗?
我可以解决这个问题的唯一方法是使用 for 循环,但是 Foreach 应该工作,它以前总是这样做的。有人可以启发我吗?
[编辑] 澄清一下,错误是 $this->form_spec['fields'] 的内容发生了变化,而不是我无法正确打印的事实。