如何在PHP中获得POST数组值(附代码)

788 阅读2分钟

本文将介绍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中获得一个数组值。我们希望这些信息能帮助你解决你的问题,并提供更深入的语言知识,但如果没有,请随时与我们联系,提出任何问题或关切。