在数组PHP中存储从表单获取的值

在数组PHP中存储从表单获取的值,php,html,Php,Html,我试图通过get方法将用户的输入存储在一个数组中,以存储它,并在不覆盖初始get值的情况下进一步处理它。但是我不知道怎么做。。我必须将它们存储在数据库中才能做到这一点吗?或者我可以把每一个输入都推到一个数组中吗?我相信下面的方法应该适合您。。。这将获取您提供的所有$\u GET并将它们放入一个新数组中,这样您就可以在不影响原始$\u GET数组的情况下修改它们 if(is_array($_GET)){ $newArr = $_GET; // modify $newArr['postFieldN

我试图通过get方法将用户的输入存储在一个数组中,以存储它,并在不覆盖初始get值的情况下进一步处理它。但是我不知道怎么做。。我必须将它们存储在数据库中才能做到这一点吗?或者我可以把每一个输入都推到一个数组中吗?

我相信下面的方法应该适合您。。。这将获取您提供的所有$\u GET并将它们放入一个新数组中,这样您就可以在不影响原始$\u GET数组的情况下修改它们

if(is_array($_GET)){
 $newArr = $_GET; // modify $newArr['postFieldName'] instead of $_GET['postFieldName'] to preserve original $_GET but have new array. 
}
那里的解决方案将复制$\u GET数组$_GET只是一个内部PHP数据数组,就像$u POST一样。如果不需要新数组中的所有get,也可以循环使用get。。。为此,您可以设置一个接受的get数组,以便只提取所需的get(无论如何都应该这样做,因为如果您还将get用于数据库/sql函数或任何基于权限的函数,则随机接受表单中的get可能会导致一些麻烦)


我相信以下几点对你有用。。。这将获取您提供的所有$\u GET并将它们放入一个新数组中,这样您就可以在不影响原始$\u GET数组的情况下修改它们

if(is_array($_GET)){
 $newArr = $_GET; // modify $newArr['postFieldName'] instead of $_GET['postFieldName'] to preserve original $_GET but have new array. 
}
那里的解决方案将复制$\u GET数组$_GET只是一个内部PHP数据数组,就像$u POST一样。如果不需要新数组中的所有get,也可以循环使用get。。。为此,您可以设置一个接受的get数组,以便只提取所需的get(无论如何都应该这样做,因为如果您还将get用于数据库/sql函数或任何基于权限的函数,则随机接受表单中的get可能会导致一些麻烦)


我想补充一下@Nerdi.org所说的内容

特别是第二部分,您可以使用
array\u intersect\u key
array\u diff\u key

$theseOnly = array("postName", "postName2");
$get = array_intersect_key( $_GET, array_flip($theseOnly);

//Or

 $get = array_diff_key( $_GET, array_flip($theseOnly);

array_intersect_key()返回一个数组,该数组包含array1的所有条目,这些条目的键在所有参数中都存在

因此,这个函数只返回您放入
$theseOnly

将array1中的键与array2中的键进行比较,并返回差值。此函数类似于array_diff(),只是比较是在键而不是值上进行的

因此,这个函数返回相反的元素,或者只返回未放入
$theseOnly

array_flip()按翻转顺序返回数组,即数组中的键变为值,数组中的值变为键

这只是获取没有键的名称数组(默认情况下它有数字键),并交换键和值,因此

 $theseOnly = array_flip(array("postName", "postName2"));
 //becomes
 $theseOnly = array("postName"=>0, "postName2"=>1);

我们需要这样的键,以便它们匹配
$\u GET
数组中的内容。我们总是可以这样写数组,但是如果你的懒惰像我一样,那么你可以把它翻过来。

我只想补充一下@Nerdi.org所说的内容

session_start();
if(!isset($_SESSION['TestArray'])) $_SESSION['TestArray'] = array();
if(is_array($_GET)){
    $_SESSION['TestArray'][] = $_GET;
}
print_r($_SESSION['TestArray']);
特别是第二部分,您可以使用
array\u intersect\u key
array\u diff\u key

$theseOnly = array("postName", "postName2");
$get = array_intersect_key( $_GET, array_flip($theseOnly);

//Or

 $get = array_diff_key( $_GET, array_flip($theseOnly);

array_intersect_key()返回一个数组,该数组包含array1的所有条目,这些条目的键在所有参数中都存在

因此,这个函数只返回您放入
$theseOnly

将array1中的键与array2中的键进行比较,并返回差值。此函数类似于array_diff(),只是比较是在键而不是值上进行的

因此,这个函数返回相反的元素,或者只返回未放入
$theseOnly

array_flip()按翻转顺序返回数组,即数组中的键变为值,数组中的值变为键

这只是获取没有键的名称数组(默认情况下它有数字键),并交换键和值,因此

 $theseOnly = array_flip(array("postName", "postName2"));
 //becomes
 $theseOnly = array("postName"=>0, "postName2"=>1);
我们需要这样的键,以便它们匹配
$\u GET
数组中的内容。我们总是可以这样写数组,但是如果你的懒惰像我一样,那么你可以直接翻转它

session_start();
if(!isset($_SESSION['TestArray'])) $_SESSION['TestArray'] = array();
if(is_array($_GET)){
    $_SESSION['TestArray'][] = $_GET;
}
print_r($_SESSION['TestArray']);
谢谢大家的帮助!这对我有用


谢谢大家的帮助!这对我有用

将它们复制到变量。。。这是基本的PHP,所以你可能想查看一个基本的教程。请提供一些示例代码,让大家更容易理解你的问题。李先生,这个问题非常简单。他本质上是从PHP获取$\u GET数组,他希望能够将其存储在另一个数组中,以便能够在不影响原始$\u GET数组的情况下对其进行操作。他可以做:$newArray=$\u GET,甚至$newArr=$\u POST,这取决于他想如何设置表单控制器。下面可以找到另一个答案,它只向新数组添加“accepted GETs”:)将它们复制到一个变量。。。这是基本的PHP,所以你可能想查看一个基本的教程。请提供一些示例代码,让大家更容易理解你的问题。李先生,这个问题非常简单。他本质上是从PHP获取$\u GET数组,他希望能够将其存储在另一个数组中,以便能够在不影响原始$\u GET数组的情况下对其进行操作。他可以做:$newArray=$\u GET,甚至$newArr=$\u POST,这取决于他想如何设置表单控制器。另一个答案,只在新数组中添加了“accepted get”,如下所示:)我实际上有一些与您的第一个建议非常相似的东西,但这会覆盖$newArr中的第一个数组值。因此,数组([0]=>Array([enteredValues]=>Test123))始终是用户的最后一个输入。我还不足以理解你的第二个解决方案,但这对我也不起作用..啊,sois'enteredValues'是多次提交的名称吗?如果是,则插入do$newArr=$\u-GET,do$newArr=$\u-GET['enteredValues'];这将允许您拥有一个包含所有输入值的新数组:)尽管我只是猜测。您能为数据发送的位置添加一些代码,然后发布代码吗