通常当我使用PHP时,我为每个表单输入创建一个变量和post语句,如下所示:
$myVar1 = $_POST["formItem1"];
$myVar2 = $_POST["formItem2"];
ect......
我知道我是否使用:
echo $_POST;
我可以从表单输入中获取所有键和值,但我不知道如何在脚本中使用它们。
所以我想我有两个问题:
如何在不为每个输入创建变量的情况下快速发布所有表单输入?
如何在不将脚本分配给特定变量的情况下使用脚本中的发布?
答案 0 :(得分:6)
要简单地回显所有输入,您可以使用foreach
循环:
foreach ($_POST as $key => $value) {
echo $value.'<br/>';
}
如果您不想将它们存储在变量中,请使用数组:
$data = array();
foreach ($_POST as $key => $value) {
$data[] = $value;
}
现在,$data
是一个包含$_POST
数组中所有数据的数组。您可以随意使用它。
答案 1 :(得分:0)
您不必分配给变量。您可以直接使用$_POST['input_name']
如果你想处理每个被传递的参数,你可以使用foreach循环:
foreach ($_POST as $key => $val)
{
echo "$key : $val <br/>";
}
答案 2 :(得分:0)
对于这个快速检查和测试的例子我通常只使用print_r()
函数: documentation here
引自文档:
print_r()以人类可读的方式显示有关变量的信息。
一行易于打开和关闭(带注释) - 无需使用任何形式的变量
print_r($_POST);
如果我需要我的输出很好并且可读,我想按如下方式扩展它:
function print_r2($x){
echo '<pre>';
print_r($x);
echo '</pre>';
}
然后您可以拨打:print_r2($_POST);
这样您就可以在html页面上获得预先格式化的文本块,并且可以看到$_POST
对象打印输出提供的换行符和标签间距
答案 3 :(得分:0)
另一种提取(除了extract function)变量的方法是;
$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;
我不推荐它,因为跟上它会变得非常混乱。
答案 4 :(得分:0)
$_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'];
答案 5 :(得分:0)
定义一个函数,允许您按名称(键)访问特定的$ _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
}
答案 6 :(得分:-2)
您可以使用extract($_POST)
,它会为您创建变量。
例如,您可以拥有您发布的代码:
<?php
$_POST["formItem1"] = "foo";
extract($_POST);
echo $formItem1; // will display "foo"
?>
编辑:它不是PHP explode
,而是extract
。