2009-06-25 17 views
2

私は少し困惑...私は変更する必要がアプリで

$links = mysql_query($querystring); 
foreach (mysql_fetch_array($links) as $key=>$value) 
{ 
    $$key = $value; 
} 

をこのPHPコードを発見しました。

実際にクエリの結果を反復し、その値をキーにコピーしていますか?

もしそうなら、これのポイントは何ですか?

また、double $$表記は何ですか?私はこれまでPHPでこれを見たことがなく、私はPHPサイトでそれを参照することができないようです。それはタイプミスですか? と思われ、コードに影響しません。私は結果を理解することなくこのようなことを「修正」したいとは思わない。

+2

これらは「可変変数」http://us3.php.net/manual/en/language.variables.variable.php – BlackTigerX

答えて

4

$$はtypoではありません。別の変数で指定された変数と対話する方法です。あなたは

$varname = 'foo'; 
$$varname = 'bar'; 

を行う場合と同じように、あなただけの'bar'$fooを設定しました。

ループが実行しているのは、行内容を現在の変数名前空間に展開することです。種類はextract()です。それは数値的な指数を反復しているので、それを行うにはひどい方法です。

+0

ありがとうございます。正確に私が知る必要があったもの:) – nedlud

2

一般的に次のように書かれています。

$links = mysql_query($querystring); 
while ($row = mysql_fetch_array($links)) 
{ 
    echo $row['id']; 
} 

$$はvariable variableと呼ばれています。

これは基本的に値を保持するヴァールとしてキーを作成しているようです。 register_globalsがPOST/GETなどの行に何をするかを並べ替えます。私はこのようにすることをお勧めしません。私はそれが、ヴァースを上書きしたり、予想外のヴァールが利用可能であるなどの問題につながると言っている。

1

これは、SQLクエリの結果と結果構造に基づいてキーと値のペアを作成しています。

$$に関しては、これは別の変数ですが、今回は変数に設定された結果を除いています。

$key = "hello"; 
$$key = "hi"; 
echo $key; 

出力は「HI」

1

$$第一変数に格納された名前を持つ変数を参照します。だから、例えば:

15を印刷します
$var='some'; 
$some=15; 
echo $$var; 

これは、$ VARAを取り、「一部」は、そう、それがため、2番目の$の変数名としてことを取り、それはある$いくつかの値を出力します15.

だから、基本的にそのコードはキーと同じ名前の変数に値をコピーしています。

関連する問題