次の 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
)
)
2番目の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 は正しい値を示しています。次に、2 番目の print_r は、値が変更されたことを示しています。これらの間に他のコードはありません。
5.3.0 のバグでしょうか?
問題を回避できる唯一の方法は、代わりに for ループを使用することでしたが、Foreach は機能する必要があり、以前は常に機能していました。誰でも私を啓発できますか?
[編集] 明確にするために、バグは $this->form_spec['fields'] の内容が変更され、正しく印刷できないという事実ではありません。