2017-04-15 7 views
6

20個のユーザー入力変数を持ち、$ var [0..19]、$ _SESSION ['var' [0..19]]、&以下のような$ _POST [ 'VAR' [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の($でそれらにアクセスすることができます$ _SOSSION ['var'。$ k] ... $ _POST ['var'。$ k]} ' – splash58

答えて

1

$$を使用して変数名を定義できますが、配列$ varsを使用する方が良いと思います。 $ VAR0、$ VAR1、と

......、あなたは配列$ VARSで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になります。しかし、依然として、必要な変数のみを取得し、その値をフィルタリングすることを確認してください。

関連する問題