[PHP-users 9967] Re: phpの変数に文字が入らない現象について
Masaki Fujimoto
php-users@php.gr.jp
Tue, 10 Sep 2002 19:50:14 +0900
ふじもとです。
# 混乱を招きやすいところなので、ちょっと丁寧に:)
On Tue, 10 Sep 2002 10:25:24 +0000
"aiko" <vvv_aiko_vvv@hotmail.com> wrote:
> こんにちは。
こんにちは。
-snip-
> 比較後に$sStrの中に更新アドレスを入れたいのですが、
> $url = "inline" . $i+1 ."php?data=" . $aCompAft[$i] . ";";
> $frameNm = "inline" . $i+1;
> の二つの変数に頭の文字"inline"が入りません。
これは"inline" . $iという式の値がintegerとして扱われているからです。
http://jp2.php.net/manual/ja/language.operators.php
ここに記述されている通り、'+'と'.'は優先順位が同じで結合時の評価順序は左
です。このため、まず"inline" . $iが評価され(string)"inline1"になります。
($i == 1のとき)。
で、次に"inline1" + 1が評価されます。このとき演算子は'+'なので、"inline1"
は数値型に変換され0となり、この式の値は1となります。
(参照)
http://jp2.php.net/manual/ja/language.types.string.php#language.types.string.conversion
なので、"inline"と$iの値が消えているように*見えて*いるわけです。
というわけなので、以下のように解決すれば期待通りに動作するはずです。
$url = "inline" . ($i+1) ."php?data=" . $aCompAft[$i] . ";";
分かりにくくてすみませんが、ご理解いただけましたでしょうか?
--
藤本 真樹
アストラザスタジオ
fujimoto@studio.co.jp
fujimoto@php.net