在我正在研究的一些代码中,我注意到从foreach循环外部访问了几个变量.
这可以在此特定应用程序的codeigniter视图文件中看到.
<?PHP
foreach ($items as $row):
endforeach;
// HTML / PHP code...
<td>
<?PHP echo form_checkBox('option_1','1', FALSE); ?>
<?PHP echo form_hidden('weight_unit', $row->weight_unit); ?>
</td>
// etc...
这有效(即没有错误),但我想知道这是否会被视为不良做法,如果是这样,为什么? (范围等)
有没有人对此有意见,只应在相应的循环内调用变量?
我注意到的另一个问题是视图文件的几个部分是否需要变量:我应该重构多个循环还是应该有一个foreach / endforeach和文件的开头/结尾.
任何建议都非常感谢.谢谢.
解决方法:
当$到达你的其他代码时,$row将是数组中的最后一项,或者是unset.
这是你想要的吗?如果是这样,那么这本身并不坏.但是你至少应该记录该行为的意图,因为它不直观.
更好的做法是这样的:
foreach ($foo as $bar)
{
// do something
}
$last_bar = isset($bar) ? $bar : null;
很明显,你的意思是使用$last_bar做一些事情.
Another issue I’ve noticed is if a variable is required in several parts of a view file
如果你必须在视图中的不同位置迭代你的循环,那就没关系.
但是如果你只需要某个数组内部的某些信息,那么你应该将它放在一个易于访问的变量中并使用它.