У меня есть код в php, например:
while($r = mysql_fetch_array($q))
{
// Do some stuff
}
где $ q - запрос, извлекающий набор членов группы. Однако некоторые группы имеют членов, сохраненных в memcached, и это значение memcached сохраняется в массиве как $ mem_entry. Чтобы пройти через это, я обычно делал бы следующее
foreach($mem_entry as $k => $r)
{
// Do some stuff
}
Вот проблема. Я не хочу, чтобы два блока идентичного кода (раздел // do some stuff) были вложены в два разных цикла только потому, что в одном случае я должен использовать mysql для цикла, а другой - memcached. Есть ли какой-нибудь способ переключить запуск с цикла с while или foreach? Другими словами, если $ mem_entry имеет непустое значение, первая строка цикла будет foreach ($ mem_entry as $ k => $ r), или, если она пуста, первая строка цикла будет while ( $ r = mysql_fetch_array ($ q))
1009 ** * Редактировать 1010 ** * 1011
Ну, через несколько секунд после того, как я написал это, я пришел к решению. Думаю, я бы оставил это для всех, кто может столкнуться с этой проблемой. Сначала я устанавливаю значение $ members в значение memcached. Если это пусто, я запускаю запрос mysql и использую цикл while для передачи всех записей в массив с именем $ members. Затем я запускаю цикл, используя foreach ($ members как as $ k => $ r). По сути, я использую цикл foreach каждый раз, но значение $ members устанавливается по-разному в зависимости от того, существует ли значение для него в memcached.