【发布时间】:2017-10-19 00:43:35
【问题描述】:
在下面的代码中,我了解到foreach $insuranceType_list 正在将数据行分配给$l。 $k 是干什么用的?对于index?
而@前面的任何变量都可以使变量成为全局变量吗?这意味着我可以在整个应用程序的任何地方访问它?
if(@$insuranceType_list){
foreach($insuranceType_list as $k=>$l){
$insuranceType_list[$k]->version_list = $this->mdl_quotation_template->getConditionTemplates('insurance_type_id='.$l->id);
}
}
我也不明白这里发生了什么:
$insuranceType_list[$k]->version_list
如果有人可以解释我会很有帮助。
【问题讨论】:
-
@用于error reporting。$k是关联数组的 key。在提交问题之前,您是否尝试过manual 或进行过任何搜索? -
@Pyromonk 抱歉,我确实尝试过搜索..我很困惑...$k 是关联数组的键。就像它根据 1.$l , 2.$l 等等来分配键......对吧?
-
如果使用foreach,则不需要调用
$insuranceType_list[$k],尝试改为$l -
在您的示例中,
$insuranceType_list是一个关联数组,foreach遍历其每个键 ($k) 并将所述键处的值分配给临时变量$l。所以如果你有$insuranceType_list = array('foo' => 'bar', 'bar' => 'foo');,foreach循环将经历 2 次迭代($k等于 'foo' 和$l等于 'bar' 在第一个和$k等于 'bar' 和 @ 987654345@ 等于第二个中的 'foo')。有关更多示例,请参阅foreach上的手册条目。 -
@Ukasyah,也就是说,如果在循环执行后变量未设置。我不建议在这个阶段去那里。在我看来,原始发帖人使用键更安全,并且在他完全理解循环和数组之前不用担心变量范围的这一方面。
标签: php mysql codeigniter foreach