如何添加索引来从数据库中foreach数据?
在下面的代码中,我明白foreach
$insuranceType_list
将把数据行分配给$l
。 $k
是多少$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
如果有人能解释我会有所帮助。
解剖:
$insuranceType_list
是一个对象数组。 我知道这一点,因为你使用箭头访问值,如$l->something
,如果你有一个数组数组,你可以像这样访问它$l['something']
@
仅仅意味着你正在压制该变量的错误。 它通常用于你不想抛出错误的函数。 $k
像foreach($insuranceType_list as $l)
,这意味着你不关心索引,你只需要每次迭代的值。 但是,如果您计划使用该密钥出于任何原因,那么您将使用该$k
变量,就像您当前正在做的那样。 例子:假设你有一个数组是这样的:
$list = [
[
'name' => 'john'
'age' => 29
],
[
'name' => 'jane'
'age' => 23
]
];
如果你想创建说“约翰29岁”的字符串。 然后你会做到以下几点:
foreach($list as $l){
echo "{$l['name']} is {$l['age']} years old";
}
然而,如果你想让字符串说“约翰是名单上的第一名,并且已经29岁”。 然后你会做到以下几点:
foreach($list as $k => $l){
echo "{$l['name']} is #{$k} on the list, and is {$l['age']} years old";
}
尽管如此,我会以这种方式缩短代码:
if (!empty($insuranceType_list)) {
foreach ($insuranceType_list as $l) {
$l->version_list = $this->mdl_quotation_template->getConditionTemplates('insurance_type_id=' . $l->id);
}
}
链接地址: http://www.djcxy.com/p/58163.html