PHP Array'd POST变量名称

时间:2011-09-11 05:18:38

标签: php arrays forms multidimensional-array wordpress-theming

使用以下代码我试图:

  1. 测试是否已提交其中一个动态分配的字段名称;
  2. 使用“可操作​​代码”处理提交的信息。
  3. 我的问题在于我无法检索适当的动态变量名称。 $this->get_field_name('email_to')将输出名称变量,例如widget-mywidget[3][email_to];但要通过PHP访问此值,我需要$_POST['widget-mywidget'][3]['email_to']

    的形式

    我怎样才能解决这个难题?

    输出HTML:

    <form id="widget-mywidget-3-osiris_contact" method="post" action="">
    <fieldset>
    <input type="text" name="widget-mywidget[3][user_name]">
    <input type="text" name="widget-mywidget[3][user_email]">
    <textarea name="widget-mywidget[3][user_message]"></textarea>
    </fieldset>
    <fieldset>
    <input type="hidden" name="widget-mywidget[3][email_to]" value="">
    <input type="hidden" name="widget-mywidget[3][email_subject]" value="">
    <button type="submit" name="widget-mywidget[3][email_send]">Send</button>
    </fieldset>
    </form>
    

    处理PHP:

    if(in_array($this->get_field_name('email_to'), $_POST)){ // <--- Where I need help.
        // Actionable Code
    }
    

2 个答案:

答案 0 :(得分:1)

这是$this->get_field_name的作用:

  function get_field_name($field_name) {
     return 'widget-' . $this->id_base . '[' . $this->number . '][' . $field_name . ']';
  }

我建议你print_r($ _ POST)并在视觉上进行比较以获得更好的调试...
(或者使用调试器......)

答案 1 :(得分:-2)

$thing  = "widget-mywidget[3][email_to]";
$exp    = explode("[", $thing);
$get_it = $_POST['".$exp[0]."[".$exp[1]."[".$exp[2]."'];

尝试,如果有效。