本文将介绍PHP的post数组的基本用法,即从输入表单中获取一个值。文章还将强调关于如何使用post数组的一些要点,它们的用途,以及在哪里可以找到关于它们的更多信息。
PHP提供了一个数组数据类型来存储数值集合。POST变量是由Web浏览器发送给你的PHP代码的表单输入,它允许你存储从HTML表单传入的多个值。
PHP中POST数组的介绍
POST数组存储的是由表单发送到服务器的数据。
这两种方法都对可以发送到服务器的内容有限制,GET请求被限制在8位ASCII,浏览器可能会阻止在一个事务中提交超过2kb的数据。
POST数组可以存储极其大量的数据,没有任何限制。想象一下,你有一个HTML表单,要求人们提供他们的全部简历,在这种情况下,将表单提交的数据保存到POST数组中是很有意义的。
如何创建POST数组?
创建一个新的PHP post数组与创建一个普通的数组不同,因为你必须告诉PHP它应该使用哪个特殊的变量名来存储post数据。
PHP使用的特殊变量有很多,但我们只关心$_POST 。$_POST 包含所有通过HTTP POST方法提交的值。$_REQUEST - 包含所有通过任何方法**(GET、POST、COOKIE**等)提交的值。
如前所述, GET请求不能一次发送非常多的数据,因此,它们不应该被用来发送大量的信息(如用户上传)或大型表格(如用户简历)。
如何在PHP中获得POST数组的值
要在PHP中获得所有的post数据,我们必须使用$_POST 这个超全局变量。你可以使用$_POST['key'] 语法检索一个特定键的值,但如果该键不存在,那么这将返回一个空字符串。
如果你想检查一个给定的键是否存在,可以使用isset() 函数,比如说:
if (isset($_POST['key'])){
echo 'Key exists';
}else {
echo 'Key does NOT exists';
}
如果想知道给定的POST数组 是否有任何内容,使用empty()函数,例如:
if (empty($_POST['key'])){
echo 'No content';
}else {
echo 'Content exists';
}
检索帖子数组的值
<form action="demo.php" method="post">
Cooking <input type="checkbox" name="hobbies[]" value="1"><br/>
Singing <input type="checkbox" name="hobbies[]" value="2"><br/>
Playing <input type="checkbox" name="hobbies[]" value="3"><br/>
Swimming <input type="checkbox" name="hobbies[]" value="4"><br/>
<button type="submit">Submit</button>
</form>
我们现在想看看用户选择了哪个爱好:
<?php
if( isset($_POST['hobbies']) ){
$hobbies = $_POST['hobbies'];
foreach($hobbies as $hobby) {
echo $hobby . "<br>";
}
}
?>
如果用户选择了烹饪和演奏,那么就会显示1,3。
如何抓取POST中的所有变量?
即使你不知道所有的字段,你也可以得到发布到一个页面的所有数据。有时,这对调试是非常方便的。请看下面的代码:
<?php
$data = "";
foreach ($_POST as $key => $value){
$data .= "Key [$key] = Value [$value] <br>";
}
echo $data;
?>
如果你使用复选框,请记住,未选中的复选框将不包括在$_POST数组中。你需要按照上面的步骤来做。
如果POST数据只有值而没有键,如何获得它?
如果POST数据没有键,你可以使用file_get_contents() 函数获得它的值。检查下面的代码:
<?php
$post_data = file_get_contents("php://input");
php://input 是一种从请求体中读取数据的方法。使用 比使用 更好,因为它不需要一个特殊的php.ini指令。然而,当请求的php://input $HTTP_RAW_POST_DATA enctype是 "multipart/form-data"时,不能使用 。php://input
结束语
这篇博文是一个快速指南,让我们了解 如何在PHP中获得一个数组值。我们希望这些信息能帮助你解决你的问题,并提供更深入的语言知识,但如果没有,请随时与我们联系,提出任何问题或关切。