如何从数据库中添加foreach数据的索引?

时间:2017-05-19 02:55:15

标签: php mysql codeigniter foreach

在下面的代码中,我了解到$_POST['dataId'] $_POST['id']正在将数据行分配给foreach。什么是$insuranceType_list?对于$l? 在任何变量前面$k可以使变量成为全局变量吗?这意味着我可以在整个应用程序的任何地方访问它?

index

我也不知道这里发生了什么:

@

如果有人能解释我会很有帮助。

1 个答案:

答案 0 :(得分:2)

让我们剖析:

  1. $insuranceType_list是一个对象数组。我知道这一点是因为您使用$l->something中的箭头访问值,如果您有一个数组数组,您可以像$l['something']
  2. 那样访问它
  3. 前面的@只是意味着您正在抑制该变量的错误。它通常用在你不想抛出错误的函数中。
  4. 您可以使用foreach迭代而不使用$k foreach($insuranceType_list as $l),这意味着您不关心索引,只需要每次迭代的值。但是,如果您出于任何原因计划使用密钥,那么您将使用当前正在执行的$k变量。
  5. 实施例:  假设您有一个数组是这样的:

    $list = [
        [
            'name' => 'john'
            'age' => 29
        ],
        [
            'name' => 'jane'
            'age' => 23
        ]
    ];
    

    如果你想创建“约翰29岁”的字符串。然后你会做以下事情:

    foreach($list as $l){
        echo  "{$l['name']} is {$l['age']} years old";
    }
    

    但是如果你想要字符串说“John在列表中排名第一,并且已经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);
        }
    }