Дублируется вывод цикла foreach в PHP

РЕШЕНО:

Пришлось указать начальное значение ' ' для $rfield, как подсказывает KNaito, ПЕРЕД циклом (т.е. $rfield = ' ';). Благодарю вас!


ОРИГИНАЛЬНЫЙ ПОСТ:

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

Вот мой цикл:

foreach($fieldsarray as $field) {

${$field} = $globalrow[$field];

if(!empty($$field)) {$rfield.='<tr><td width="50%">'.${$field.'_label'}.': </td><td width="50%">'.${$field}.'</td></tr>';

}
} 

$allrows=$rfield;

В $fieldsarray слишком много элементов для вставки сюда, но вот так:

$fieldsarray = array ('firstname','lastname','email');

$globalrow — это запрос mysql, который извлекает данные вошедшего в систему пользователя в соответствии с mysql_fetch_assoc.

Ожидаемый вывод HTML будет подтверждением регистрации со сводкой введенных данных, отображаемых на экране, а также в подтверждении по электронной почте, которое получает пользователь.

Это таблица, состоящая из строк введенных данных. Все данные сохраняются в БД.

Строки таблицы правильно выводятся на экран, например:

First Name: John
Last Name : Smith

но по какой-то странной причине в подтверждении по электронной почте вывод дублируется:

First Name: John
Last Name : Smith
First Name: John
Last Name : Smith

В обоих случаях я просто повторяю их:

<?php echo $allrows ?>

Как я уже сказал, я читал о проблемах дублирования вывода при использовании while и foreach, например. mysql_fetch_array - но, как вы можете видеть, это не тот случай, и почему это должно нормально работать на экране, в то время как в подтверждении по электронной почте все элементы отображаются дважды?


ИЗМЕНИТЬ, ЧТОБЫ ПОЯСНИТЬ ПОЛЬЗОВАТЕЛЯ В КОММЕНТАРИЯХ НИЖЕ:

У меня есть регистрационная форма, где люди регистрируются (вводят личные данные). Когда они заполняют форму, они попадают на сводную страницу, которая показывает их вставленные данные, например:

Prefix: Mr.
First Name: John
Last Name: Smith

После нажатия «Отправить» пользователь помечается как «зарегистрированный» и получает подтверждение по электронной почте.

Само подтверждение по электронной почте представляет собой простой файл HTML с добавлением фрагмента PHP, который печатает строки с данными пользователя (точно так, как показано на странице сводки).

Теперь на сводной странице вывод в порядке, но в подтверждении по электронной почте все данные ДУБЛИРУЮТСЯ и отображаются, например. в виде:

Prefix: Mr.
First Name: John
Last Name: Smith
Prefix: Mr.
First Name: John
Last Name: Smith

Итак, почему это произошло? И сводка, и подтверждение HTML — это абсолютно один и тот же код.

РЕДАКТИРОВАТЬ (PRINT_R):

print_r ($ глобальный):

    Array ( [regid] => 630 [eid] => 1 [guid] => xxxxxx-D898-CBE0-D018-xxxxxxx [regcomp] => 1 [regdate] => 2014-04-25 14:57:28 [prefix] => Mr. 
[nametitle] => [firstname] => Xxxxx [lastname] => Xxxxxx [company] => XXXXXXX [department] => [jobtitle] => [street] => XXXXXXXX [zip] => 8217878979 [city] => XXXXX [country] => XXXXX [priv_street] => [priv_zip] => [priv_city] => 
[priv_country] => [phone] => XXXXXX [fax] => [mobile] => [email] => XXXXXXX [travel] => [terms] => [notes] => [accommodation] => [roompartner] => [arrivaldate] => [arrivaltype] => [arrivalairport] => [arrivalflightno] => 
[arrivaltransfer] => [departuredate] => [departuretype] => [departureairport] => [departureflightno] => [departuretransfer] => 
[dinner] => [dinnerpersons] => 0 [food] => [hotel] => [checkin] => [checkout] => [roomtype] => [special] => [hotelnotes] => [groupparticipanttype] => Companion [mainparticipantid] => 629 ) 

print_r ($ поля массива):

    Array ( [0] => prefix [1] => nametitle [2] => firstname [3] => lastname [4] => company [5] => department [6] => jobtitle [7] => email 
[8] => phone [9] => fax [10] => mobile [11] => street [12] => zip [13] => city [14] => country [15] => dinner [16] => dinnerpersons 
[17] => food [18] => checkin [19] => checkout [20] => hotel [21] => roomtype [22] => roompartner [23] => special [24] => hotelnotes 
[25] => accommodation [26] => arrivaldate [27] => departuredate [28] => notes [29] => terms )

person Al-Iskander Al-Albani    schedule 25.04.2014    source источник
comment
Как я сказал в вашем предыдущем вопросе, пожалуйста, просто объясните, что вы хотите сделать, на простом английском языке. Я абсолютно уверен, что эти полузапутанные нечитаемые переменные переменных не являются ответом.   -  person Steve    schedule 25.04.2014
comment
Попробуйте использовать mysqli или PDO. если это не сработает, попробуйте сократить цикл foreach и указать индекс 0, чтобы указать первый элемент в массиве пользователей. то есть $field[0]['firstname'];   -  person Justin E    schedule 25.04.2014
comment
вместо $$ используйте extract   -  person Justin E    schedule 25.04.2014
comment
Итак, мы знаем, что вы хотите сделать. Далее, что хранится в переменных $globalrow и $fieldsarray? Если вы можете показать print_r() каждого, это поможет.   -  person Steve    schedule 25.04.2014
comment
@user574632 user574632 Здравствуйте, я уже опубликовал то, что находится в $fieldsarray - $fieldsarray = array('firstname','lastname','email'); А $globalrow — это mysql_fetch_assoc из основного запроса БД (выберите * из main_table, где guid = $_GET['guid'])   -  person Al-Iskander Al-Albani    schedule 25.04.2014
comment
Я РАЗМЕЩУ PRINT_R ВЫШЕ   -  person Al-Iskander Al-Albani    schedule 25.04.2014
comment
В приведенном выше коде, похоже, нет проблем. Где вы инициализируете $rfield? Есть ли вероятность того, что процесс вызывается дважды?   -  person KNaito    schedule 25.04.2014