Intereting Posts
PHP: как я могу заблокировать прямой доступ к URL-адресу для файла, но все-таки разрешить его загрузку вошедшим в систему пользователям? Как получить содержимое тега span с помощью функции preg_match? updatin xml в php PHP set_time_limit () не работает, safemode выключен динамический выпадающий ящик? Как получить массив неизвестных значений $ _GET в URL? Нажатие Enter на <input> представляет неверную <форму> (2 формы на 1 странице) Вставить изображение в Mail без использования графического файла изображений Magento Сохранение массива Multiselect на пользовательской модели gettext не перевод Как извлечь определенную строку (электронную почту) из файла через php Почему приложение Symfony2 тратит 70-90% своего времени на анализ YAML? PHP PDO Как извлечь данные MySQL в многомерный массив без цифровых клавиш внутри Propel: как удалить ссылку, сделанную через отношение «многие ко многим» PHP – SQL выбрать первый столбец без данных

объединить две петли foreach

У меня две петли foreach: 1-й:

foreach ($items as $key => $item) { $keywords = explode(' ', $qsvarus); $title[$key] = preg_replace('/\b('.implode('|', $keywords).')\b(?![^<]*[>])/i', '<b>$0</b>', $title[$key]); $infoo[$key] = preg_replace('/\b('.implode('|', $keywords).')\b(?![^<]*[>])/i', '<b>$0</b>', $infoo[$key]); echo '<tr><td>'.$title[$key].$infoo[$key].$item.'</tr></td>'; } 

Второй:

 foreach ($linkai as $key => $linkas) { $i++; $a1 = $linkas[1]; $a2 = str_replace("download/", "files/", $a1); $a3 = str_replace("&","&amp;", $a2); $a4 = str_replace("amp;nbsp;","nbsp;", $a3); echo "<div class=\"bgframe".str_replace("/i/", "/IMG/", $a4)."</div></div>"; } 

Вопрос заключается в том, как сделать эти две петли для отображения результатов следующим образом:

 Result1 from Loop1 Result1 from Loop2 Result2 from Loop1 Result2 from Loop2 Result3 from Loop1 Result3 from Loop2 And so on... 

Вместо:

 Result1 from Loop1 Result2 from Loop1 Result3 from Loop1 ... Result1 from Loop2 Result2 from Loop2 Result3 from Loop2 

благодаря

Вы можете использовать MultipleIterator для этого:

 $m = new MultipleIterator(); $m->attachIterator(new ArrayIterator($items), 'item'); $m->attachIterator(new ArrayIterator($linkai), 'linkas'); foreach ($m as $unit) { // $unit['item'] contains an entry from $items // $unit['linkas'] contains an entry from $linkai // your logic here } 

Очевидное решение:

 $output1 = array(); $output2 = array(); foreach ($items as $key => $item) { $keywords = explode(' ', $qsvarus); $title[$key] = preg_replace('/\b('.implode('|', $keywords).')\b(?![^<]*[>])/i', '<b>$0</b>', $title[$key]); $infoo[$key] = preg_replace('/\b('.implode('|', $keywords).')\b(?![^<]*[>])/i', '<b>$0</b>', $infoo[$key]); $output1[] = '<tr><td>'.$title[$key].$infoo[$key].$item.'</tr></td>'; } foreach ($linkai as $key => $linkas) { $i++; $a1 = $linkas[1]; $a2 = str_replace("download/", "files/", $a1); $a3 = str_replace("&","&amp;", $a2); $a4 = str_replace("amp;nbsp;","nbsp;", $a3); $output2[] = "<div class=\"bgframe".str_replace("/i/", "/IMG/", $a4)."</div></div>"; } $output = array_map( null, $output1, $output2 ); foreach ( $output as $lines ) { $lines = array_filter( $lines ); foreach ( $lines as $line ) { echo $line; } } 

Лучший ответ, вероятно, у Джека, но я думал, что мое решение было интересным. Я также попытался улучшить код:

 do { if ($item = current($items)) { $key = key($items); $keywords = str_replace(' ', '|'); list($infoo_str, $title_str) = preg_replace( "/\b({$keywords})\b(?![^<]*[>])/i", '<b>$0</b>', array($infoo[$key], $title[$key]) ); echo "<tr><td>{$infoo_str}{$title_str}{$item}</tr></td>"; next($items); } if ($linkas = current($linkai)) { $characters = array('download/', '&', 'amp;nbsp;', '/i/'); $replacements = array('files/', '&amp;', '&nbsp;', '/IMG/'); $linkas = str_replace($characters, $replacements, $linkas); echo "<div class='bgframe{$linkas}'</div></div>"; next($linkai); } } while ($item or $linkas);