PHP:使用数组值和字符串文本创建动态变量名称

时间:2015-03-29 00:42:01

标签: php arrays variables for-loop dynamic-arrays

我正在开发一个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语句正在从表单中提取数据,但是我用来尝试创建生成器中使用的变量名的代码似乎并没有起作用。在上面的示例代码中,说&#34; beerspecials &#34;是 $ sectionblock1 的值,我尝试按名称&#34; beerspecialsnumber &#34;,&#34; beerspecialssectiontitle &#34;,&#34; beerspecials1title &#34; (对于第一个啤酒特殊产品),&#34; beerspecials1titlesize &#34; (对于该标题的字体大小)。所有这些都在HTML生成器中使用。

基本上,我尝试使用正在使用的节名,将它们放入数组中,使用该数组中的值创建变量名,并在其末尾添加字符串文本。

有办法做到这一点吗?我已尝试过无数种组合并在整个网站上进行搜索,但似乎无法解决这个问题?

0 个答案:

没有答案