Циклы foreach - добавление элементов после начала? - PullRequest
0 голосов
/ 17 февраля 2012

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 17 февраля 2012

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

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

0 голосов
/ 17 февраля 2012

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

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

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

0 голосов
/ 17 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...