2017-04-15 37 views
6

如果我有20个用户输入变量并希望在$ var [0..19],$ _SESSION ['var'[0..19]],& $ _ POST [ '变种'[0..19],如:数组和foreach循环更有效地处理输入变量

$var0 = $_SESSION['var0'] = $_POST['var0']; 

我怎么能这样做有效地利用阵列和foreach循环?

其他细节:

所以最初我一直在想尝试这样的:

$inputVars = array('var1'=>$var1, 'var2'=>$var2, 'var3'=>$var3, 'var4'=>$var4, 'var5'=>$var5) 

$inputVarsS = array($_SESSION['inputVars = array('svar1'=>$_SESSION['var1']'], 'svar2'=>$_SESSION['var2'], 'svar3'=>$_SESSION['var3'], 'svar4'=>$_SESSION['var4'], 'svar5'=>$_SESSION['var5']) 

$inputVarsP = array($_POST['inputVars = array('pvar1'=>$_POST['pvar1']'], 'pvar2'=>$_POST['pvar2'], 'pvar3'=>$_POST['pvar3'], 'pvar4'=>$_POST['pvar4'], 'pvar5'=>$_POST['pvar5']) 

,然后我想我可以做这样的事情:

$inputVarsS['svar1'] = $inputVarsP['pvar1']; 

设置会话值svar1发布值pvar1。但我认为真的有一个更有效的方式来做这些任务。

我想我可以很容易地拥有$ inputVars数组,并为键分配POST SESSION值,但是如果我想同时使用POST和SESSION值呢?那我想我需要多个数组?

+0

'的foreach访问它们($ var as $ k => $ v){... $ var [$ k] ... $ _SESSION ['var'。$ k] ... $ _POST ['var'。$ k]}' – splash58

回答

1

你可以使用$$来定义一个变量名,但我认为最好使用一个数组$ vars。

随着var0 $,$ VAR1,....,你可以像echo $var4

foreach(range(0, 19) as $index) 
{ 
    $var = 'var' . $index; 
    $$var = $_SESSION[$var] = $_POST[$var]; 
} 

随着阵列$瓦尔访问它们,并与echo $vars[4]

foreach(range(0, 19) as $index) 
{ 
    $var = 'var' . $index; 
    $vars[$var] = $_SESSION[$var] = $_POST[$var]; 
} 
0

你的问题缺乏信息,所以我的答案可能是错的。

您可以复制整个数组是这样的:当你要提取的变量然后

$_SESSION['post'] = $_POST; 

,你可以使用:

extract($_SESSION['post']); 

所以,如果$_POST['var0']存在,它会提取$var0

但是,您绝不应将发布的数据放在全局范围内。黑客可以使用它将它们的变量注入到代码中。请始终先过滤输入。好一点的是:

extract($_SESSION['post'],EXTR_PREFIX_ALL,'post'); 

因此,这将是$post_var0而不是$var0。但是,仍然要确保你只获得你想要的变量,并过滤它们的值。