php_PHP チュートリアルの global と $GLOBALS[] の 1 つの分析
誰かが不用意にグローバル変数を変更する可能性があるため、問題が発生する可能性があります。 PHP のグローバル変数は、関数で使用する場合はグローバルとして宣言する必要があります (Global キーワードは関数で定義されている場合にのみ有効であることに注意してください)。
1: Global の機能はグローバル変数を定義することですが、このグローバル変数は Web サイト全体ではなく、現在のページ (include または require 内のすべてのファイルを含む) に適用されます。
$a=123;
function aa()
{ //$a がグローバルとして定義されていない場合変数、関数本体 関数本体の外から $a にアクセスすることはできませんが、同じ名前の $a を定義することができます。このとき、この変数はローカル変数であり、C 言語のローカル変数に相当し、関数本体内で使用されます。
echo $a;
}
aa();
コードをコピーします
コードは次のとおりです:
}
//次の例をもう一度見てください
answer1: まず、config.inc.php で定数を定義します:define(定数名, 定数値)
次に、それを使用する必要がある他の場所で「config.inc.php」を要求します。
その後、それを直接使用できますこのファイルは定数です。
answer2: $x[a]、$x などの配列を定義する方法もあります。これにより、グローバル $x を宣言するだけで済みます。
答え 3: あなたの方法を試しましたが、うまくいきませんでした。
答え 4: php.ini ファイルを変更します。
3. Global 配列と $GLOBALS 配列の例
例: global を使用します
コードをコピーします
コードは次のとおりです:
$w3sky = 1; ;
function Sum ()
{
global $w3sky, $w3sky2 = $w3sky2;
echo $w3sky2?>
上記のスクリプトの出力は次のようになります。 「3」になります。グローバル変数 $w3sky と $w3sky2 は関数内で宣言されており、任意の変数のすべての参照変数はグローバル変数を指します。 PHP では、関数が宣言できるグローバル変数の最大数に制限はありません。
グローバル スコープ内の変数にアクセスする 2 番目の方法は、特別な PHP カスタム $GLOBALS 配列を使用することです。前の例は次のように記述できます。
この例では、グローバルの代わりに $GLOBALS を使用します
$GLOBALS['w3sky'] = $GLOBALS['w3sky']
}Sum();
; $GLOBALS 配列では、各 A 変数は要素であり、キー名は変数名に対応し、値は変数の内容に対応します。 $GLOBALS はスーパーグローバル変数であるため、$GLOBALS はグローバル スコープ内に存在します。次の例は、スーパーグローバル変数の使用法を示しています。
スーパーグローバル変数とスコープの例を示す例
コードは次のとおりです:
?>
global つまり、ファイル内で global $db として宣言している限り、宣言の下でこの $db を参照できます。
4. 当初、global と $GLOBALS は記述方法が異なることを除いて同じであると考えていましたが、実際のアプリケーションでは、この 2 つの違いは依然として非常に大きいことがわかりました。まず次の例を見てください。
コードをコピーします
コードは次のとおりです:
// 例 1
function test_global() {
global $var1, $var2;
$var2 =& $var1;
}
function test_globals() {
$GLOBALS['var3'] = & $GLOBALS['var1'];
$var1 = 5;
test_global();
print $var2 ."n"; "n";
?>
実行結果は次のとおりです:
0
5
PHP マニュアルの $GLOBALS の説明を引用:
グローバル変数: $GLOBALS
注: $GLOBALS は PHP 3.0.0 以降のバージョンで適用されます。
定義されたすべてのグローバル変数で構成される配列。変数名は配列のインデックスです。
これは「スーパーグローバル」、または自動グローバル変数として説明できます。
つまり、上記のコードの $var1 と $GLOBALS['var1'] は、2 つの異なる変数ではなく、同じ変数を参照します。
グローバルが何をしたか分析しましょう?
PHP の関数によって生成される変数は関数のプライベート変数であることは誰もが知っているので、グローバル キーワードによって生成される変数はこの規則を回避できないのはなぜでしょうか。次のコードを見てください。コード
コードは次のとおりです。
// 例 2
function test() {
global $a;
なぜ 1 が出力されるのですか? $a の設定が解除されていませんか?設定解除に失敗しましたか? PHPのバグ?
いいえ、実際には、unset は機能します。テスト関数で $a を設定解除します。
コードをコピー
してください。つまり、global はテスト関数の外側の $a に対してエイリアス変数 "$a" を生成します。これを --test->$a に変更しました。次の図が表示されます:
test_globals が実行された後、変数の変化を見てください:
この時点で、図を見ると、例 1 の実行後に $var2 が 0 である理由がわかります。 、$var3 は 5!
それで、関数内の global と $GLOBALS[] の違いは次のとおりです:
global は、関数の実際の外部変数ではなく、関数の外部変数を指すエイリアス変数を関数内に生成します。エイリアス変数を変更すると、そのアドレスを指すと、予期せぬ状況が発生します (なぜ出力結果が 2 になるのでしょうか? 実際、$var1 の参照が $var2 の参照アドレスを指しているためです。その結果)この時点では、実際の値は変化していません。$var2 を指すポインタはポインタを変更するだけですが、実際には $var2 の値はまったく変化しません。 $var2 の値はまだ変化しません)、たとえば、例 1.
$GLOBALS[] は実際に呼び出されます。これは外部変数であり、関数の内部と外部で常に一貫性が保たれます。
注: (上記の例 1 に戻って、test_global のコード「$var2 =& $var1;」を見てください。上記は参照割り当て操作です。つまり、$var2 は、 が指す物理メモリ アドレスを指します。したがって、例 1 で test_global 関数が実行された後、変数の変更は関数内でローカルにのみ影響します。関数の外側で $var2 が指す物理メモリ アドレスは変更されません。キーポイント)
次に、上記の例 1 に戻り、test_global のコード「$var2 =& $var1;」を見てください。つまり、$var2 は、指定された物理メモリ アドレスを指します。したがって、例 1 の test_global 関数を実行した後の変数の変化は、以下の図から確認できます)
http://www.bkjia.com/PHPjc/324879.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/324879.html
技術記事
誰かが不用意にグローバル変数を変更する可能性があるため、問題が発生する可能性があります。 PHP のグローバル変数は、関数で使用する場合はグローバルとして宣言する必要があります (キーワード Global が関数で使用されることに注意してください...
)

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
