[PHP-users 24121] Re: 可変変数について
HIGASHI Taku
oolong @ cslab.co.jp
2005年 1月 13日 (木) 17:53:55 JST
東志です
foreach()で用いる $keyを関数スコープ内に閉じ込めとくのがポイントです。
--
<?php
MyRegisterGlobals();
echo "aaa = $aaa, key = $key, bbb= $bbb<br>";
exit;
function MyRegisterGlobals() {
foreach ($_GET as $key => $value) {
$GLOBALS[$key] = $value;
}
}
?>
--
上記は取り敢えず可能…というだけであり、 register_globalsが offになった
理由を踏まえて、$_GET[], $_POST[], $_REQUEST[]を使うようにソースを修正す
るのが本筋だと思います。
では。
From: Koichi Shimamura <MAF01541 @ nifty.ne.jp>
Subject: [PHP-users 24118] 可変変数について
Date: Thu, 13 Jan 2005 13:41:08 +0900
> 島村です。
>
> $_POST や $_GET を展開して利用しようと次のようなスクリプトを組みました。
>
> 1 <?php
> 2 foreach ($_GET as $key => $value) {
> 3 $$key = $value;
> 4 }
> 5 echo "aaa=$aaa, key=$key, bbb=$bbb";
> 6 ?>
>
> これを次のように呼び出すと
>
> http://192.168.0.3/test.php?aaa=456&key=123&bbb=789
>
> このような結果となってしまいます。
>
> aaa=456, key=bbb, bbb=789
>
> 2つ目の引数 key とスクリプト内で用いている $key がダブってしまってうまく変数
> に値をセットできません。変数名がダブらないようにすれば期待通りに展開して値をセ
> ットしてくれます。
>
> $$key を ${$key} としても結果は同じでした。
>
> register_globals が off に切り替わったための逃げの処理なのですが、皆さんどのよ
> うにされていますか?
PHP-users メーリングリストの案内