我对PHP foreach循环有疑问。我在Codeigniter中使用它。
基本上我有一个db中的项目列表,我正在使用foreach循环在db中的每个项目上运行脚本,直到脚本在每个项目上运行。
我的问题是:例如,如果我在数据库中有45个项目,然后启动循环,如果在循环仍在运行时将其他项目添加到数据库列表中会发生什么,从而制作更大的列表要循环的物品?
它会是: 运行循环启动时循环中的所有项目(在本例中为45)。 要么 运行循环中的所有项目以及当它结束时(在数字45处)继续运行脚本,在启动循环后我添加的其他项目。
我似乎无法找到任何答案,任何信息都非常感谢
答案 0 :(得分:2)
当您使用CodeIgniter从数据库中获取所有项目时,它会将结果放入结果对象或数组中,具体取决于您是使用$this->db->result();
还是$this->db->result_array();
因此,当您循环此结果时,任何新记录都不会显示在此对象或数组中。仅当您触发新查询时,任何新行都将添加到结果中。
答案 1 :(得分:0)
最初当您触发查询时,他们在db中有45条记录,然后添加了记录,因此将只显示45条记录
答案 2 :(得分:0)
当php脚本运行以从DB表中提取记录时,它实际上根据你的查询和提取从表中提取所有记录。将其保存在PHP变量中。之后,foreach循环从该变量中逐个提取数据&执行它。
在执行时,如果有任何更多的记录进入你的数据库表,那么你将在你的表中存储不在你的PHP数组中。因此,forloop执行不会受到那些额外行的影响。
如果你想执行所有那些额外的记录,那么你再次对数据库表进行SELECT查询&提取那些额外的记录..需要保持它们是一个PHP数组&由foreach执行。