访问PHP foreach循环外的变量

在我正在研究的一些代码中,我注意到从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

如果你必须在视图中的不同位置迭代你的循环,那就没关系.

但是如果你只需要某个数组内部的某些信息,那么你应该将它放在一个易于访问的变量中并使用它.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...