Intereting Posts
PHP: как класс может ссылаться на свое собственное имя? Невозможно использовать имя столбца переменной PHP для обновления столбца в SQL Как указать два расположения шаблонов Twig? Вызов функции PHP MySQL, PHP, JavaScript UTF-8 Проблема с шведскими буквами (все протестировано – ничего не работает) Как установить корень документа как подкаталог с использованием .htaccess, а не VHost Использование PHP для создания PDF-файла из простого текста и текста HTML обновление раскрывающегося списка изменений другого раскрывающегося списка с помощью php-ajax Динамически фильтровать сообщения WordPress с выпадающим меню (используя php и ajax) Как проверить, включена ли поддержка PDO в моей установке Apache? PHP Добавление двух часов к дате в заданные часы с использованием функции Php конвертировать ipv6 в число Сортировка элементов совпадающих тегов, имеющих вес в MySQL Разница в доступе к массивам в PHP 5.3 и 5.4 или некорректное несоответствие конфигурации? Eclipse PDT не предлагает всех функций php

PHP Использовать имя переменной в foreach после установки значения

РЕДАКТИРОВАТЬ: РЕШЕН


ОРИГИНАЛЬНАЯ ПОЧТА:

У меня есть цикл foreach, который создает переменные в виде:

foreach ($fieldsarray as $field) { ${$field} = $globalrow[$field]; } 

Это создает переменные, используя элементы массива, такие как $ firstname, $ lastname и т. Д.

Теперь, поскольку значения этих переменных извлекаются из БД, я не могу снова использовать имена переменных в одном и том же foreach. Я хотел бы использовать это в цикле:

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

В принципе, это создало бы строки таблицы с данными из БД, но только если значение переменной не пусто.

Моя проблема заключается в следующем: поскольку я заявил выше, например, $ firstname = 'John' – тогда вторая часть кода больше не работает, потому что я предполагаю, что PHP не преобразует приведенный выше фрагмент в

 if(!empty($firstname)) 

а скорее

 if(!empty(John)) 

Как я могу «заставить» PHP снова использовать переменную NAME, а не ее значение в этом случае?

Спасибо за помощь.

EDIT: Хорошо, приветствовали предложения cheezeburgers, и я думаю, что теперь он работает по назначению. Спасибо всем вам за вашу помощь.

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

 First Name: John Last Name : Smith 

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

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

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

 <?php echo $allrows ?> 

где $ allrows находится в цикле foreach.

(Я отправлю эту часть в качестве нового вопроса, так как теперь это новая проблема)

PHP отлично справится с этим, просто вы пропустили цитату вокруг _label и, вероятно, это читается как константа.

Попробуй это:

 $$field='<tr><td width="50%">'.${$field}.'_label: </td> <td width="50%">'.${$field}.'</td></tr>'; 

который дает результат как:

 John_label: John 

демонстрация

Я бы сделал это совсем иначе, но чтобы ответить на ваш вопрос, попробуйте следующее:

 extract($globalrow); 

Он создает переменные в текущей области для каждой записи в массиве, идущей по имени соответствующего ключа. Таким образом, пока нет числовых клавиш, это должно работать вместо ${$field} = $globalrow[$field]; , Затем просто ссылайтесь на переменные по фактическому имени.

http://php.net/extract