[PHP-users 14186] Re: ダブルクオートやPHP の変数について

php-users @ php.gr.jp php-users@php.gr.jp
2003年 3月 23日 (日) 06:26:34 JST


 うめばやしです。

> で、スクリプト内で
> $FORM  = GetData("$_POST['name']")
> 
> とやると、$FORMは空でした。
(snip
> いろいろ試した挙句、
> 
> $FORM  = GetData($_POST['name'])
> 
> とダブルクオートをはずせば処理された文字列が入るようになりました。
(snip)
> 1.関数に引数を渡すとき、""でくくったときとくくらないとき、
>     なにが違うのか。(変数が展開されるのはわかっていますが...)

 ここでの「"」となしのときの振る舞いの違いについてはPerlなんかだと
常識なんですが(というかMTさんは先刻ご承知ですが)

  「"」  内部に記述された変数を展開する

という機能が関わってきますです。

 つまり、nameに「うめばやし」という文字列が代入されたときに、ダブル
クォーテーションでくくった場合、変数の中身が展開されて

GetData(うめばやし)

として渡されてしまうことになります。
 この場合、本来ならデータ格納場所へのポインタとしての変数名が渡らなく
てはいけないので、とうぜん「うめばやし」というポインタを探しに行って
nullになってしまいます。

 そんなわけでダブルクオーテーションでくくると存在しないデータ格納場所
を見に行って「null」が帰り、変数名をそのまま渡せばきちんと動作するという
振る舞いになってくるわけです。

 それでわ。
Exitus patet-------------------------------------+---------------------
						pyramid@tkf.att.ne.jp
					A6 1D 87 D0 0D 96 BC FE 4D 6A
					76 1A 81 28 8D 39 21 04 DC 73





PHP-users メーリングリストの案内