如何重写$ _REQUEST中的所有变量?

时间:2013-04-09 00:45:33

标签: php arrays

我想知道是否有一种快速方法可以循环遍历$_REQUEST并通过在函数中运行它们来更改所有提交的变量。

例如,我说$_REQUEST['a']的值为stuff$_REQUEST['b']的值为more stuff。我想重写整个$_REQUEST[]数组,使$_REQUEST['a']的值变为myfunction('stuff')$_REQUEST['b']的值变为myfunction('more stuff')。我知道传递给$_REQUEST.的所有元素的名称

3 个答案:

答案 0 :(得分:1)

您可以使用array_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');
?>

同样,对于您的问题,您可以这样做:

function stuff() {
   ///
}

现在以这种方式走你的$_REQUEST功能:

array_walk($_REQUEST, 'stuff', 'fruit');

答案 1 :(得分:1)

就个人而言,我对修改特殊 $_REQUEST数组感觉不太好,所以我会创建另一个带有修改值的数组 - 以防万一

$requestProcessed = array_map('myfunction', $_REQUEST); 

通过这种方式,您可以获得修改后的值仍然可以访问原始值(如果您碰巧需要它们)。

如果您可以修改$_REQUEST数组本身,那么array_walk会更好(正如Praveen Kumar所建议的那样)。

答案 2 :(得分:0)

首先,你正在做的事情似乎是坏消息,因为REQUEST存储了各种各样的东西,比如$ _COOKIES,$ _POST和$ _GET变量等等,但是如果你真的想这样做,那么你可以做它是这样的:

foreach ($_REQUEST as $key => $val) {
    $_REQUEST[$key] = myFunction($val);
}