циклы foreach - добавление элементов после его инициирования?

У меня есть вопрос о циклах PHP foreach. Я использую его в Codeigniter.

В основном у меня есть список элементов в базе данных, и я использую цикл foreach для запуска сценария для каждого элемента в базе данных, пока сценарий не будет запущен для каждого элемента.

Мой вопрос: если бы у меня было, например, 45 элементов в базе данных, а затем я инициировал цикл, что произойдет, если дополнительные элементы будут добавлены в список базы данных во время выполнения цикла, что приведет к увеличению списка элементов для зациклено?

Будет ли это либо: запустить все элементы, которые были в цикле, когда он был инициирован (в данном случае 45). или Запустить все элементы в цикле и когда он дойдет до конца (под номером 45) продолжить выполнение скрипта на дополнительных элементах, которые я добавил после запуска цикла.

Я не могу найти ответы на этот вопрос, любая информация приветствуется.


person user1176859    schedule 17.02.2012    source источник
comment
Я не понимаю, почему бы тебе не пойти и не попробовать?   -  person MacMac    schedule 17.02.2012
comment
как только запрос будет запущен, и вы запустите цикл forach для полученного результата, никакие записи не будут добавлены, вам придется снова выбирать элементы из таблицы.   -  person Sumit Neema    schedule 17.02.2012


Ответы (3)


Когда вы извлекаете все элементы из базы данных с помощью CodeIgniter, он помещает результаты в объект результата или массив, в зависимости от того, используете ли вы $this->db->result(); или $this->db->result_array();

Поэтому, когда вы перебираете этот результат, никакие новые записи не будут отображаться в этом объекте или массиве. Только когда вы запускаете новый запрос, любые новые строки будут добавлены к результату.

person Crinsane    schedule 17.02.2012

Первоначально, когда вы запускали запрос, в БД было 45 записей, а затем запись была добавлена, поэтому будет отображаться только 45 записей.

person Poonam    schedule 17.02.2012

Когда php-скрипт запускается для извлечения записей из таблицы БД, он фактически извлекает все записи из таблицы в соответствии с вашим запросом и сохраняет их в переменной PHP. После этого цикл foreach извлекает данные один за другим из этой переменной и выполняет ее.

Во время выполнения, если в вашу таблицу БД поступит еще какие-либо записи, они будут сохранены в вашей таблице, а не в массиве PHP. Таким образом, выполнение цикла for не будет зависеть от этих дополнительных строк.

Если вы хотите выполнить все эти дополнительные записи... тогда снова вам нужно сделать запрос SELECT к таблице БД и извлечь эти дополнительные записи.. Нужно сохранить их в массиве PHP и выполнить их с помощью foreach.

person Suresh    schedule 17.02.2012