PHP发布所有表单输入,而不为每个表单创建变量


PHP post all form inputs without creating variables for each

通常当我使用PHP时,我会为每个表单输入创建一个变量和post语句,比如:

   $myVar1 = $_POST["formItem1"];
   $myVar2 = $_POST["formItem2"];
   ect......

我知道我是否使用:

  echo $_POST;

我可以从表单输入中获得所有的键和值,但我不知道如何在脚本中使用它们。

所以我想我有两个问题:

  1. 如何在不为每个输入创建变量的情况下快速发布所有表单输入?

  2. 如何使用脚本中发布的,而不将其分配给特定变量?

要简单地回显所有输入,可以使用foreach循环:

foreach ($_POST as $key => $value) {
    echo $value.'<br/>';
}

如果您不想将它们存储在变量中,请使用数组:

$data = array();
foreach ($_POST as $key => $value) {
    $data[] = $value;
}

现在,$data是一个包含$_POST数组中所有数据的数组。你可以随心所欲地使用它。

您不必为变量赋值。您可以直接使用$_POST['input_name']

如果你想处理每个发送的参数,你可以使用foreach循环:

foreach ($_POST as $key => $val)
{
  echo "$key : $val <br/>";
}

对于这种快速检查和测试的例子,我通常只使用print_r()函数:此处的文档

引用自文件:

print_r()以人类可读的方式显示有关变量的信息。

一行易于打开和关闭(带注释)-无需使用任何形式的变量

print_r($_POST);

如果我需要我的输出好看可读,我喜欢如下扩展:

function print_r2($x){
     echo '<pre>';
     print_r($x);
     echo '</pre>';
}

然后您可以使用:print_r2($_POST); 进行呼叫

通过这种方式,您可以在html页面上获得预先格式化的文本块,并可以看到$_POST对象打印输出

提供的换行符和选项卡间距

提取变量(除了提取函数)的另一种方法是;

$array = array('foo'); // Which POST variables do you want to get
foreach($array as $key) {
    if(!isset(${$key})) { // Check if variable hasn't been assigned already
        ${$key} = $_POST[$key];
    }
}
echo $foo;

我不推荐它,因为它可能会变得很乱。

查看$_POST中的所有内容对调试很有用

echo '<pre>'.print_r($_POST, true).'</pre>';

访问特定复选框

HTML

<input type="checkbox" value="something" name="ckbox[]" checked>
<input type="checkbox" value="anotherthing" name="ckbox[]" checked>

PHP

echo $_POST['ckbox'][0]; // something
echo $_POST['ckbox'][1]; // anotherthing
// isolate checkbox array
$ckbox_array = $_POST['ckbox'];

定义一个函数,允许您按名称(键)访问特定的$_POST项目:

function get_post_value($name, $default)
{
    if ( isset($_POST[$name]) ) {
        return $_POST[$name];
    } else if ( $default ) {
        return $default;    
    }
    return null;
}

$default允许您传递一个值,如果指定的键不在$_POST数组中,该值可以用作回退。

现在,您可以引用$_POST项,而无需将它们分配给变量,也无需担心它们是否已设置。例如:

if ( get_post_value('user-login-submit', false) ) {
    // attempt to log in user
}

您可以使用extract($_POST),它将为您创建变量。

例如,你可以为你发布的代码:

<?php
$_POST["formItem1"] = "foo";
extract($_POST);
echo $formItem1; // will display "foo"
?>

EDIT:这不是PHP explode,而是extract