我需要遍历一个数组两次——一次是修改它的值,一次是在 html 中显示它的内容。不幸的是,我遇到了麻烦。我创建了一个测试场景来说明这个问题。
$cases = array(
array('caseStyle' => 'case style 1', 'caseNum' => 'case01'),
array('caseStyle' => 'case style 2', 'caseNum' => 'case02'),
array('caseStyle' => 'case style 3', 'caseNum' => 'case03'),
array('caseStyle' => 'case style 4', 'caseNum' => 'case04'),
array('caseStyle' => 'case style 5', 'caseNum' => 'case05'),
array('caseStyle' => 'case style 6', 'caseNum' => 'case06')
);
foreach ($cases as $k => &$v) {
$v['caseNum'] = ucwords($v['caseNum']);
}
foreach ($cases as $k => $v) {
echo $v['caseNum'] . ' - ' . $v['caseStyle'] . '<br/>';
}
这输出:
Case01 - case style 1
Case02 - case style 2
Case03 - case style 3
Case04 - case style 4
Case05 - case style 5
Case05 - case style 5
请注意最后一项的值是错误的。
如果在第二次迭代期间我使用
foreach($cases as $k => $d)
而不是foreach($cases as $k => $v)
或者如果我$v
在第二次迭代之前取消设置(unset($v))
一切正常。这很有趣。我错过了什么?