Php 如何重写$\u请求中的所有变量?
我想知道是否有一种快速的方法来循环Php 如何重写$\u请求中的所有变量?,php,arrays,Php,Arrays,我想知道是否有一种快速的方法来循环$\u REQUEST,并通过函数运行它们来更改所有提交的变量 例如,假设我被给予了$\u请求['a'],其值为stuff,$\u请求['b'],其值为更多stuff。我想重写整个$\u REQUEST[]数组,使$\u REQUEST['a']的值变成myfunction('stuff'),而$\u REQUEST['b']的值变成myfunction('more stuff')。我不知道传递给$\u请求的所有元素的名称。您可以使用array\u walk函数
$\u REQUEST
,并通过函数运行它们来更改所有提交的变量
例如,假设我被给予了
$\u请求['a']
,其值为stuff
,$\u请求['b']
,其值为更多stuff
。我想重写整个$\u REQUEST[]
数组,使$\u REQUEST['a']
的值变成myfunction('stuff')
,而$\u REQUEST['b']
的值变成myfunction('more stuff')
。我不知道传递给$\u请求的所有元素的名称。
您可以使用array\u walk
函数传递数组。例如:
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
function test_alter(&$item1, $key, $prefix)
{
$item1 = "$prefix: $item1";
}
function test_print($item2, $key)
{
echo "$key. $item2<br />\n";
}
echo "Before ...:\n";
array_walk($fruits, 'test_print');
array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";
array_walk($fruits, 'test_print');
?>
现在,通过以下方式遍历您的$\u请求
:
array_walk($_REQUEST, 'stuff', 'fruit');
首先,您所做的似乎是个坏消息,因为请求存储了各种内容,例如$\u COOKIES、$\u POST和$\u GET variables等等,但是如果您真的想这样做,那么您可以这样做:
foreach ($_REQUEST as $key => $val) {
$_REQUEST[$key] = myFunction($val);
}
就我个人而言,修改特殊的
$\u请求
数组感觉不太好,所以我会用修改后的值创建另一个数组-以防万一:
这样,您可以得到修改后的值,并且仍然可以访问原始值(如果您碰巧需要它们)
如果您可以修改
$\u请求
数组本身,那么数组(walk
更好(如Praveen Kumar所建议的) 你可以用一个简单的for循环来解决这个问题。除非你告诉我你为什么要这样做,否则我不会帮你。我认为你这样做是错误的,解释一下你想做什么。我很确定,$\u REQUEST
不会存储会话之类的东西,只存储用户提交的东西,比如$\u COOKIE
和$\u POST
。我想它甚至包括$\u GET
是的,你是正确的,我总是被$_请求保存cookies而不是会话弄糊涂,它仍然非常不稳定,我会更正答案。当PHP有内置函数时,为什么不使用它呢!:PIt很难跟踪所有的PHP内置函数,有很多不同的命名约定:P
foreach ($_REQUEST as $key => $val) {
$_REQUEST[$key] = myFunction($val);
}
$requestProcessed = array_map('myfunction', $_REQUEST);