[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