Php 试图从数组中创建名为输入字段的变量,但不起作用

Php 试图从数组中创建名为输入字段的变量,但不起作用,php,html,jquery,Php,Html,Jquery,我正在做一个项目,并试图创建一个通用部分来将各种表单数据保存到数据库中。我写下了以下代码,将所有数据发送到php字段,并将其发送到数据库。但问题是,这给了我一个错误 if(isset($_POST['data_for']) && $_POST['data_for']=='save') { $data = $_POST['formdata']; print_r($data); // This is showing proper array as an output

我正在做一个项目,并试图创建一个通用部分来将各种表单数据保存到数据库中。我写下了以下代码,将所有数据发送到php字段,并将其发送到数据库。但问题是,这给了我一个错误

if(isset($_POST['data_for']) && $_POST['data_for']=='save') {
    $data = $_POST['formdata'];
    print_r($data); // This is showing proper array as an output
    foreach ($data as $key => $value) {     
        echo $value['name']; //This gives the key (index value) of the form "Eg. email"
        echo $value['value']; //This gives the value of the user input "eg. abc@xyz.com"
        
        $$value['name'] = $value['value']; //This line gives error as "Array to string conversion"
    }
    echo $email; //This is just a test to print a variable created in runtime 
   //The insertion to database code goes here.

}
上面的代码从下面的jquery中获取值

$(document).on('submit','form.cat1', function(e){
    e.preventDefault();
    var forum = $(this).attr('forum');
    var method = $(this).attr('method');
    var nonce = $(this).attr('nonce');
    var data_for = $(this).attr('data-for');
    var formdata = $(this).serializeArray();
    //alert(formdata);
    $.ajax({
        url:'formSubmitPoint.php',
        method:method,
        data:{formdata:formdata, nonce:nonce, forum:forum, data_for:data_for},
        //processData: false,
        //contentType: false, 
        success:function(data){
            console.log(data);
            if (data['result']=='success') {
                if (data['action']=='redirect') {
                    window.location.href=data['location'];
                }
                if (data['action']=='show') {
                    $(data['location']).html(data['message']);
                }
            }
            if (data['result']=='error') {
                if (data['action']=='show') {
                    $(data['location']).html(data['message']);
                }
            }
        },
        error:function(data){
            console.log(data);
        }
    });
})
jquery从下面的html中提取数据

<form class="was-validated cat1" method="post" forum='feedback' data-for="save" nonce="{$nonce}">
  <div class="form-group">
    <label for="newPass">Name</label>
    <input type="text" class="form-control" id="name" placeholder="Your Name" name="name" required>
    <div class="valid-feedback">Valid.</div>
    <div class="invalid-feedback">Please fill out this field.</div>
  </div>
  <div class="form-group">
    <label for="newPass">Email</label>
    <input type="email" class="form-control" id="email" placeholder="Your Email Address" name="email" required>
    <div class="valid-feedback">Valid.</div>
    <div class="invalid-feedback">Please fill out this field.</div>
  </div>
  <div class="form-group">
    <label for="newPass">Contact Number</label>
    <input type="number" class="form-control" id="contact" placeholder="Your contact number" name="contact" required>
    <div class="valid-feedback">Valid.</div>
    <div class="invalid-feedback">Please fill out this field.</div>
  </div>
  <div class="form-group">
    <label for="newPass">Message</label>
    <textarea class="form-control" id="message" name="message" required></textarea>
    <div class="valid-feedback">Valid.</div>
    <div class="invalid-feedback">Please fill out this field.</div>
  </div>
  <button type="submit" name="submit" class="btn btn-primary btn-sm">Submit</button>
</form> 

名称
有效。
请填写这个字段。
电子邮件
有效。
请填写这个字段。
联系电话
有效。
请填写这个字段。
消息
有效。
请填写这个字段。
提交
当$value['name']的值为$value时,$$value['name']将给我$email 将发送电子邮件

这是不可能的。您可以通过执行以下操作来存储它的值或对该对象的引用

$email = $value['value'];  //this is a copied object
$email = &$value['value']; //this is a reference
编辑 你能行

foreach ($data as $key => $value) {     
    echo $value['name'];
    echo $value['value'];

    $text  = $value['name'];
    $$text = $value['value'];

    echo $email;
}
不能从数组中创建变量,因为要将数组转换为字符串。您必须创建一个字符串类型变量来帮助它

foreach ($data as $key => $value) {     
    $text  = $key;
    $$text = $value;

    echo $email;
}

$$value['name']=$value['value'[;
,修复语法
$$value['name']=$value['value'];
您的第二个“[”应该是一个“]”这里:$value['value'.$$的意思是什么?很抱歉,这里是一个打字错误…我在代码中写得正确,仍然不起作用。@Nikkorian the$$var(双美元)是一个引用变量,它在其中存储$variable的值。@nagyi,它在其他项目中也以同样的方式工作。我在同一组代码上工作了很长时间。这一次我缺少了一些东西,这导致了错误。@VikashMishra你能告诉我$email和它的值“email”之间的区别吗不是引用/或新对象?或者你能告诉我$$value['name']是做什么的吗?@nagyi我只是想用变量的值创建一个新变量。例如,$$value['name']的值为$value['name']时会给我$email将是
email
当它将是其他变量时,变量名将是其他变量。我没有硬编码变量名,因为它将在运行时生成。这没关系,但为什么您需要它?为什么您不能只将值存储在普通变量中?xd为什么这样做而不是以逻辑方式受益?这对我有帮助在多个方面,例如,我不必为使用此方法提交的每个表单硬编码变量名称。