2011-08-02 18 views
1

私はこれが行わ取得しようとしている、PHP変数とセッションの問題

$m1 = $_SESSION[m1]; 
..... 

を使用しては、ループのために、以下の

for ($i = 1; $i < 9; $i++) { 
$m . $i = $_SESSION['m' . $i]; 
} 

は、私がここで間違って何をやっていますか?

ありがとうございました。

+0

おそらく次のように使用できます。 $ _GLOBALS ['m' $ i] = $ _SESSION ['m'。 $ i]; – schmunk

答えて

3

あなた$m . $iは有効ではありません:あなたは使用する必要があり、代わりに:基本的に${'m' . $i}

  • まず、あなたは、変数の名前の構築:'m' . $i
  • をそして、そのときだけ、この名前の変数にアクセスしようとします:${ 'm' . $i }


あなたはまた、次の構文を使用できます。もちろん、

$variableName = 'm' . $i; 
$$variableName = 'your-value-here'; 


をそして、PHPのマニュアルの参照:Variable variables

+0

このPHP機能を使用しない目標を達成するには、おそらくもっと良い方法があることに注意してください。したがって、[配列](http://php.net/manual/en/language.types.array.php)を使用します。 – Legolas

+0

OPが正確に何を必要とするかによって、実際には正しいかもしれません。 –

0

は、2つの変数($m$i)の値の連結であり、割り当てる変数として使用することができない

for ($i = 1; $i < 9; $i++) { 
    ${'m' . $i} = $_SESSION['m' . $i]; 
} 

$m. $iを試みます。

Anyway, Why you don't use an array?

+0

私はこのエラーが発生します::定義されていない定数mの使用 - – Ajay

+0

で引用符を忘れて、 'm'と仮定、申し訳ありません。編集 – RiaD

+0

解決策はmの周りの引用符を紛失しました。ポスターはすでにこれを修正しました。 – Legolas

0

部分$m . $iが問題です。他の答え(${'m' . $i})が示唆するようにこれを行う方法がありますが、これはお勧めしません。

どのように使用しますか?配列でこれを行うことは可能ですか?このように、さらに$m[1]を得るために$m[$i]など

+0

この配列を前の配列よりも使用することの利点が分かります。 – Ajay

+0

配列は変数のリストを意味します。たとえば、配列の長さを要求することができ、そこにどの要素があるかを見ることができますが、このメソッドを使うと正確な名前を知り、別々に追跡する必要があります。さらに、配列(または他のプログラミング言語のようなリストや辞書)は、従来のプログラミングの概念であり、ほぼすべての言語で存在します。また、(連想)配列を使ってこれらの「変数変数」を使ってできることを達成することもできます。 – Legolas

+0

ありがとう、今私は配列を実装しようとしている、あなたはここで$ _SESSION ['$ m [$ i]] =クリーン($ _ POST [m [$ i]);私はここで間違って何をしていますか?私はこれを$ _SESSION ['$ m [1]'] = clean($ _ POST [m [1])としたい。 – Ajay

0

- これは少し話題から外れている - それ

$ _SESSION [ 'M1']

の代わり

を書くための習慣作り

$ _SESSION [m1]

いつか、あなたは奇妙なエラーに直面するかもしれません。