Intereting Posts
Идентификатор пользователя Echo для пользователей в отдельной таблице Создание настраиваемого типа сообщений для только зарегистрированных пользователей Миниатюра сообщения вне цикла Проблема с попыткой отобразить заголовок в сообщениях Пустые страницы с # URL и Google Custom Post Type – Главная страница для определенных сообщений Как предотвратить смешные символы на главной странице Войти участников с помощью веб-служб Использование wp_list_categories, например, the_category (показывая только текущие категории сообщения) Дополнительный запрос WP на странице архива Заказ пользовательских полей по алфавиту Использование двух тем – один для основного сайта, один для электронной торговли Пользовательский запрос поля – значение мета является массивом Эхо-строка в действии transition_post_status приводит к тому, что «невозможно изменить информацию заголовка – заголовки, уже отправленные» Как я могу использовать отдельные домены для отдельных страниц?

цикл foreach внутри цикла, создающий дубликаты на выходе

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

Когда я смотрю на результаты, созданная переменная ($ fullname) отображается несколько раз в строках с сообщениями, которые не имеют того же идентификатора, что и идентификатор события $ fullname.

Вот код со всеми циклами

<?php // the loop if (have_posts()) : $output.='<table class="contentTable" border="0" width="100%">'; $output.='<tr class="one-sixth">'; $output.='<th>Agency</th>'; $output.='<th>Project Description</th>'; $output.='<th>Time Frame</th>'; $output.='<th>Team Leader</th>'; $output.='<th>Volunteer Limit</th>'; $output.='</tr>'; while (have_posts()) : the_post(); //Get post attendee amount $project_id = get_the_ID(); $attendees = $wpdb->get_var("SELECT COUNT(user_id) FROM ".$wpdb->prefix."mro_attendees WHERE event_id = ".$project_id.""); //Get team leader name $leader = $wpdb->get_results("SELECT user_first_name, user_last_name FROM ".$wpdb->prefix."mro_attendees WHERE event_id = ".$project_id." AND user_role = 'team_leader' LIMIT 0,1"); foreach ($leader as $lead) { $leaderfirst = $lead->user_first_name; $leaderlast = $lead->user_last_name; $fullname = $leaderfirst . ' ' . $leaderlast; } //Title and link $temp_title = get_the_title($post->ID); $temp_link = get_permalink($post->ID); // output all findings - CUSTOMIZE TO YOUR LIKING $output.='<tr class="one-sixth">'; $output.='<td><a href="'.$temp_link.'">'.$temp_title.'</a></td>'; $output.='<td>'.get_custom_field('project_description').'</td>'; $output.='<td>'.get_custom_field('project_timeframe').'</td>'; $output.='<td>'.$fullname.'</td>'; $output.='<td>'.$attendees.'/'.get_custom_field('project_limit').'</td>'; $output.='</tr>'; endwhile; $output.='</table><div class="clear-line"></div>'; //pagination links $output.= wp_pagenavi(); $output.='<style>#pagenavi{display:none;}</style>'; $output.='<style>.wp-pagenavi{margin-bottom:20px;}</style>'; else: $output.='nothing found.'; endif; ?> 

Командный лидер $ fullname должен показывать только один раз в соответствии с идентификатором сообщения, что идентификатор события равен циклу, однако результаты вывода в конечном итоге помещают этих людей в другие строки для проектов (post ids), которые не имеют одинакового идентификатор события с человеком. Поэтому они (имена лидеров группы) появляются в дополнительных строках цикла, и я не могу понять, почему это так. Указанный счетчик не вызывает такой же проблемы.

Спасибо и очень признателен всем, кто может мне помочь!

Solutions Collecting From Web of "цикл foreach внутри цикла, создающий дубликаты на выходе"

Это проблема php logic / variable. Вы $fullname независимо от того, установлено ли оно внутри этой итерации foreach . Таким образом, для проектов, которые никогда не вводят foreach для установки $fullname , он все еще содержит все, что было установлено последней итерацией. Установите перед пустой строкой пустую строку, чтобы она содержала только имя, если оно входит в foreach .