web-dev-qa-db-ja.com

PHP変数名を連結する方法は?

PHP forループ:

for ($counter=0,$counter<=67,$counter++){

echo $counter;
$check="some value";

}

私が達成しようとしているのは、forループ変数を使用して、それを別の変数の名前に追加することです。

基本的に、私はPHP出力が各行に対して次のようになるようにします

1
$check1="some value"

2
$check2="some value"

3
$check3="some value"

4
$check4="some value"

etc etc 

私が試してみました $check.$counter="some value"しかし、これは失敗します。

どうすればこれを達成できますか?私は明白な何かを見逃していますか?

17
Smudger

変数変数 の正しい構文は次のとおりです。

${"check" . $counter} = "some value";

しかし、私はこれを強く思いとどまらせます。あなたが達成しようとしていることは、おそらく arrays を使用することにより、よりエレガントに解決できます。使用例:

// Setting values
$check = array();
for ($counter = 0; $counter <= 67; $counter++){
    echo $counter;
    $check[] = "some value";
}

// Iterating through the values
foreach($check as $value) {
    echo $value;
}
57
Tim Cooper

これは、場合によっては使用できます。たとえば、アプリのDBに2つの言語エントリのようなものがあるとします。

echo $this->{'article_title_'.$language};

これは、たとえばこれよりもはるかに使いやすくなっています。

if($language == 'mylanguage1')
    echo $this->article_title_mylanguage1;
else
    echo $this->article_title_mylanguage2;

明らかに、これはあなたの多言語アプリで行うべきではないことですが、私はこのようなケースを見てきました。

5
arma

$ {'varname'}構文を使用する必要があります:

for ($counter=0,$counter<=67,$counter++){
    echo $counter;
    ${'check' . $counter} ="some value";
}

これは機能しますが、なぜ配列を使用しないのですか?

$check[$counter] = "some value";
5
Adunahay

アレイはこれを実現します。

$check = array();

for($counter = 0; $counter <= 67; $counter++) {
    $check[] = "some value";
    var_dump($check[$counter]);
}
0
Matt