自动从$ _POST变量中分配多个值

时间:2012-03-27 00:01:15

标签: php post dynamic

我刚刚编写了以下代码:

<?php


        $email = checkPost("email");
        $username = checkPost("username");
        $firstname = checkPost("firstname");
        $lastname = checkPost("lastname");
        $zipcode = checkPost("zipcode");


        echo("EMAIL: ".$email."  USERENAME: ".$username);
        function checkPost($formData) {
            if (isset($_POST[$formData])) {
                return $_POST[$formData];   
            }
        }

    ?>

我想要做的就是消除顶部对checkPost()的所有调用。下面的代码不需要知道提交给它的表单中的字段,它只是循环遍历所有字段并吐出它们的值。

<?php
// loop through every form field
while( list( $field, $value ) = each( $_POST )) {
   // display values
   if( is_array( $value )) {
      // if checkbox (or other multiple value fields)
      while( list( $arrayField, $arrayValue ) = each( $value ) {
         echo "<p>" . $arrayValue . "</p>\n";
      }
   } else {
      echo "<p>" . $value . "</p>\n";
   }
}
?>

我想修改此代码,以便创建像$ email等变量,并动态分配值。比如说你在具有“email”和“name”的表单上运行它。你不必给php一个变量名$ email或$ name。它将循环执行并为“email”创建并填充名为$ email的变量,依此类推。

我在做梦吗?

2 个答案:

答案 0 :(得分:1)

foreach ($_POST as $key=>$value) {
    echo '<p>', htmlspecialchars($key), ' = ', htmlspecialchars($value), '</p>';
}

我认为这就是你要找的东西。基本上,我们只是循环遍历所有$_POST元素并显示它们。你当然可以在循环中随心所欲地做任何事情。

答案 1 :(得分:1)

可以使用......

extract($_POST, EXTR_SKIP);

...但我不推荐。这会将数组的密钥解压缩到它所在的范围内。我已将其设置为 not 覆盖现有变量。

您应该明确定义变量。