8

$GLOBALSこのコードを使用して印刷する場合:

<?php print_r($GLOBALS); ?>

私はこの出力を取得します:

Array ( [_GET] => Array ( ) [_POST] => Array ( ) [_COOKIE] => Array ( ) [_FILES] => Array ( ) [GLOBALS] => Array *RECURSION* )

*RECURSION*この場合、「 」とはどういう意味ですか。また$_SERVER、、$_REQUESTなども印刷されないのはなぜですか。

4

3 に答える 3

4

PHPマニュアルのこの部分を参照してください:

$GLOBALS自体がグローバル変数であることに注意してください。したがって、このようなコードは機能しません。

<?php
    print '$GLOBALS = ' . var_export($GLOBALS, true) . "\n";
?>

これにより、「ネストレベルが深すぎます-再帰的な依存関係ですか?」というエラーメッセージが表示されます。

リスト全体をすでに取得しています。リストの一部を表示することはできません(意味のあるものではなくタイムアウトが発生するため、再帰を含むリスト)。

、となる$_REQUESTと、、、から派生したものであるため、その内容は冗長です。$_GET$_POST$_COOKIE

編集古いバグ/機能があります。これは、アクセスされたときに発生している$GLOBALSよう$_SERVERです。$_REQUESTだから、アクセスしてみて$_REQUEST、それが役立つことを願っています。とにかく、それは$GLOBALSその後で見つけることができます:ideone.com/CGetH

于 2012-09-19T05:26:10.887 に答える
2

$GLOBALS配列としてそれ自体を含みます。PHPリファレンスでは、次の定義を見つけることができます$GLOBALS

スクリプトのグローバルスコープで現在定義されているすべての変数への参照を含む連想配列。変数名は配列のキーです。

したがって、それ自体も含まれている必要があり、再帰につながります。

スクリプトで他に何も起こらなかったため、他の配列はおそらく空です。

再帰については古いジョークがあります。「再帰を理解するには、再帰を理解する必要があります」。

ところで:それは私のコンピュータに_SERVERを出力します。

于 2012-09-19T05:46:12.683 に答える
0

オブジェクトがそれ自体を指している場合...つまり、オブジェクトは円を描くだけになります。

于 2012-09-19T05:22:30.677 に答える