[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 メーリングリストの案内