foreach 循环 - 一旦启动就添加项目?

发布于 2025-01-06 18:52:38 字数 332 浏览 0 评论 0原文

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

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

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

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

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

I have a question about PHP foreach loops. I'm using it in Codeigniter.

Basically I have a list of items in a db and I'm using a foreach loop to run a script on each item in the db until the script has been run on every item.

My question is: If I had, for example, 45 items in the database and then initiated the loop, what would happen if additional items were added to the database list while the loop was still running, thus making a bigger list of items to be looped over?

Would it either:
Run all the items that were in the loop when it was initiated (in this case, 45).
or
Run all the items in the loop and when it gets down to the end (at number 45) continue to run the script on the additional ones I added after the loop was initiated.

I can't seem to find any answers for this, any info is most appreciated

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

抚笙 2025-01-13 18:52:38

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

因此,当您循环此结果时,任何新记录都不会显示在该对象或数组中。仅当您触发新查询时,任何新行都会添加到结果中。

When you fetch all items from the db with CodeIgniter, it puts the results in an result object or array, depending if you use $this->db->result(); or $this->db->result_array();

So when you loop over this result, any new records won't show up in this object or array. Only when you fire a new query, any new rows will be added to the result.

柏林苍穹下 2025-01-13 18:52:38

最初,当您触发查询时,数据库中有 45 条记录,然后添加了记录,因此只会显示 45 条记录。

Initially when you fired a query their was 45 records in db and then record has been added , so there will be only 45 records which will be displayed

无法回应 2025-01-13 18:52:38

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

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

如果你想执行所有这些额外的记录..那么你必须再次对数据库表进行 SELECT 查询提取那些额外的记录..需要将它们保存为 PHP 数组 &通过 foreach 执行它们。

When a php script run for extracting records from DB table, it actually extract all the records from table according to u'r query & save it in a PHP variable. After that, foreach loop extract data one by one from that variable & execute it.

At the execution time, if any more records comes to u'r DB table then that'll get store in u'r table not in u'r PHP array. So, forloop execution will not get effected by those extra rows.

If u want to execute, all those extra records.. then again u've to make SELECT query to the DB table & extract those additional records.. Need to keep them a PHP array & execute them by foreach.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文