【问题标题】:foreach loops - adding items once it's been initiated?foreach 循环 - 启动后添加项目?
【发布时间】:2012-02-17 13:42:52
【问题描述】:

我有一个关于 PHP foreach 循环的问题。我在 Codeigniter 中使用它。

基本上,我有一个数据库中的项目列表,并且我正在使用 foreach 循环对数据库中的每个项目运行脚本,直到脚本在每个项目上运行。

我的问题是:例如,如果我在数据库中有 45 个项目然后启动循环,如果在循环仍在运行时将其他项目添加到数据库列表中会发生什么情况,从而使列表更大要循环的项目?

会不会: 运行启动时循环中的所有项目(在本例中为 45)。 或者 运行循环中的所有项目,当它到达最后(第 45 号)时,继续在我在循环启动后添加的其他项目上运行脚本。

我似乎找不到任何答案,非常感谢任何信息

【问题讨论】:

  • 我不明白你为什么不继续尝试一下?
  • 一旦查询被触发,您将对获取的结果运行 forach 循环,不会添加任何记录,您必须再次从表中选择项目

标签: php foreach


【解决方案1】:

当您使用 CodeIgniter 从数据库中获取所有项目时,它会将结果放入结果对象或数组中,具体取决于您使用的是$this->db->result(); 还是$this->db->result_array();

因此,当您遍历此结果时,任何新记录都不会显示在此对象或数组中。只有当您触发新查询时,才会将任何新行添加到结果中。

【讨论】:

    【解决方案2】:

    最初,当您触发查询时,它们在 db 中有 45 条记录,然后添加了记录,因此将只显示 45 条记录

    【讨论】:

      【解决方案3】:

      当运行 php 脚本从 DB 表中提取记录时,它实际上会根据您的查询从表中提取所有记录并将其保存在 PHP 变量中。之后,foreach 循环从该变量中一一提取数据并执行它。

      在执行时,如果您的 DB 表中有更多记录,那么它将存储在您的表中,而不是您的 PHP 数组中。因此,forloop 执行不会受到这些额外行的影响。

      如果你想执行,所有这些额外的记录。然后你再次对数据库表进行 SELECT 查询并提取这些额外的记录。需要将它们保留为 PHP 数组并通过 foreach 执行它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-26
        相关资源
        最近更新 更多