Я работаю над проектом PHP, который берет данные из массивной формы (тысячи входов — только я использую их, и она скрывает / отключает входы, которые не используются) и использует их для генерации HTML для электронных писем.
С таким большим количеством возможных данных, поступающих из формы, вместо того, чтобы создавать переменные для всех возможных входных данных, я пытаюсь написать PHP-скрипт, который берет данные только из разделов, включенных в это электронное письмо, для создания переменных, которые затем можно передать в скрипт генерации HTML.
Однако я наткнулся на контрольно-пропускной пункт, пытаясь динамически создавать имена переменных из используемых разделов.
Вот посмотрите на то, что я придумал:
//Data coming in from a form on sections being used
$nosections = $_POST['nosections']; // The number of sections in the email (from 1-6)
$sectionblock1 = $_POST['sectionblock1']; // The module of the first section (e.g. "beerspecial")
...
$sectionblock6 = $_POST['sectionblock6']; // the last possible section module
// An array collecting all of the sections selected in the form.
$sectionsarray = array(1 => $sectionblock1, 2=> $sectionblock2, 3 => $sectionblock3, 4 => $sectionblock4, 5 => $sectionblock5, 6 => $sectionblock6);
//loop based on number of sections in use
if (isset($nosections)) {
for($i=1; $i<=$nosections; $i++) {
// for product sections, which all have the same inputs
if((${'sectionblock'.$i} != 'events') || (${'sectionblock'.$i} != 'other')) {
// Trying to create a variable that pulls in the number of items
being used in the section (e.g. 'beerspecialnumber' which might be equal to 4)
${${'sectionsarray['.$i.']'}.'number'} = $_POST[$sectionsarray[$i].'number'];
//Another example of a failed attempt at a dynamically named variable
${'sectionsarray'.[$i].'sectiontitle'} = $_POST[$sectionsarray[$i].'sectiontitle'];
//Based on the number of products in a section, I create more variables for each
product - $q is the number of products, $i is the section number
for($q=1; $q<=${${'sectionsarray['.$i.']'}.'number'}; $q++) {
${$sectionsarray[$i].$q.'title'} = $_POST[$sectionsarray[$i].$q.'title'];
${$sectionsarray[$i].$q.'titlesize'} = $_POST[$sectionsarray[$i].$q.'titlesize'];
...
Операторы $ _POST извлекают данные из формы, но код, который я использую, чтобы попытаться создать имена переменных, которые используются в генераторе, похоже, не работает. В приведенном выше примере кода скажите:beerspecials«является значением $ sectionblock1, Я пытаюсь создать переменные по имени «beerspecialsnumber«,»beerspecialssectiontitle«,»beerspecials1title«(для первого пива специальный продукт), и»beerspecials1titlesize«(для размера шрифта этого заголовка). Все они используются в генераторе HTML.
По сути, я пытаюсь взять используемые имена разделов, поместить их в массив, использовать значения из этого массива для создания имен переменных со строковым текстом в конце.
Есть ли способ сделать это? Я пробовал бесчисленное количество комбинаций и искал по всему сайту, но не могу понять это?
Задача ещё не решена.
Других решений пока нет …