2つの整数を追加し、その結果を文字列に連結したいと思います。つまり、次のようになります。
に1を追加し$i
、その結果を文字列に連結します'icon'
。次の構文が機能すると思いました。
$x = 'icon'.$i+1;
しかし、それは私が望むことをしません-それは値'icon1'
を無視し続け、値を返し続けます$i
。
私がやりたいことをする正しい方法は何ですか?
試してみてください:
$i = 0; // init $i
$x = 'icon'.($i+1);
$i
変数を定期的にインクリメントしたい場合:
$x = 'icon'.(++$i);
Operator Precedenceは、これが起こっている理由を説明しています。
括弧を使用できます:
$x = 'icon'.($i+1);
これでうまくいくはずです。
私のテスト:
$i = 18;
$x = 'icon'.($i+1);
var_dump($x);
--> string(6) "icon19"
これを試して :
$temp = $i+1;
$x = 'icon'.$temp;
「演算子の優先順位」が原因で、間違った回答が得られます。
このリンクを参照してください: http://php.net/manual/en/language.operators.precedence.php
次の行を参照してください。left + - . arithmetic and string
.
よりも優先順位が高い+
ので、式は次のようになります。$x = ('icon'.$i)+1;
それを解決するには、上記の方法または hsz answer を使用します
すなわち:$x = 'icon'.($i+1);