phpのすべての変数の出力。 PHP変数スコープ。 あなたが知りたいと思っていたが、尋ねることを恐れていたすべて。 静的変数:それらはどこかにあります
PHP変数を含むことができる一種の情報コンテナです 各種タイプデータ(テキスト、数値、配列など)。 一般に、変数を使用すると、変数で指定された情報を作成、保存、変更し、将来的にすばやくアクセスできます。
PHPで変数を作成する方法
最初に、変数には符号が含まれています $ (ドル)-変数、次に文字の使用の指定 ラテンアルファベット(aからzまで、および大小)、最後に含めることができます 数字..。 また、名前にはアンダースコアを使用できます(末尾ではありません)。変数に名前を付ける方法:
$ var
$変数
$ year1945
$ _variable
変数を呼び出せない方法:
$ 1-数字のみで構成されます
$ 1var-変数名を数字で始めることはできません
$ / var-追加の文字にはアンダースコアのみが許可されます_
$変数-キリル文字はphpドキュメントで許可されていますが、推奨されていません
$ variable-スペースは使用できません
各変数には値が割り当てられます。 値を割り当てるには、記号を使用します =
(等しい)。 スクリプトの処理中に、変数の値はさまざまな条件に応じて繰り返し変更される可能性があります。
$ city = "モスクワ"; //変数$ cityには文字列(引用符で囲まれた)値Moscowが割り当てられました
$年= 1147; //そして$ year変数には数値1147が割り当てられました
?>
$ name = "アレクサンダー";
$ Name = "Alexey";
echo "$ name、$ Name"; //「Alexander、Alexey」を表示します
?>
PHP変数出力
これとは別に、を使用して変数を表示する方法を検討する必要があります 出力演算子、前のレッスン「PHPページの作成」で検討した作業。 出力演算子。 ..。 以下に、コメント付きのいくつかの実例を示します。//これが変数に値を割り当てる方法です
$ name1 = "Alexey";
$ name2 = "アレクサンダー";
//変数を表示します
echo $ name2; //出力:Alexander
echo "name1 is $ name1"; // name1はAlexeyです
//一重引用符を使用すると、出力は次のようになります。
//値ではなく、変数名
echo "name1 is $ name1"; //出力:name1は$ name1
//変数の値を簡単に表示できます
echo $ name1; // Alexey
エコー$ name1、$ name2; //アレクセイアレクサンダー
echo $ name1。 ""。$ name2; //アレクセイアレクサンダー
echo "$ name1、$ name2"; // Alexey、Alexander
エコー<<
$変数置換のある複数行。
終わり;
PHP変数操作
PHPでの算術演算数値の場合、加算、減算、乗算などの算術演算を実行できます。
-$ a(否定)$ aの符号を変更します。
$ a + $ b(加算)$ aと$ bの合計。
$ a- $ b(減算)$ aと$ bの違い。
$ a * $ b(乗算)$ aと$ bの積。
$ a / $ b(除算)$ aを$ bで割った商。
$ a%$ b(モジュロ除算)$ aの整数剰余を$ bで割ったもの。
例を見てみましょう
$ a = 2; //数字の場合、引用符は使用されないことに注意してください
$ b = 3; //数字の場合、引用符は使用されないことに注意してください
$結果= $ a + $ b; //変数を追加します
エコー$結果; // 5を出力します
$結果= $ b- $ a; //変数を追加します
エコー$結果; // 1を出力します
PHPでのインクリメントおよびデクリメント操作
これらの操作は、主にループを構築するときに役立ちます。これについては後で説明します。
プレフィックス-変数の前に記述された演算子( -$ a; ++ $ a)。 変更前の変数の値を返します。
Postfix-変数の後に記述された演算子( $ a--; $ a--)。 変数の変更された値を返します。
インクリメント-値を増やします。
デクリメント-値を減らします。
++ $ aプレフィックスの増分。 $ aを1つインクリメントし、$ aの値を返します。
$ a ++接尾辞の増分。 $ aの値を返し、$ aを1つインクリメントします。
-$ aプレフィックスのデクリメント。 $ aを1つ減らし、$ aの値を返します。
$ a--後置デクリメント。 $ aの値を返し、$ aを1つずつ減らします。
エコー "
接尾辞の増分
";$ a = 5;
echo "Should be 5:"。 $ a ++。 "\ NS";
エコー "
プレフィックスの増分
";$ a = 5;
エコー「6である必要があります:」。 ++ $ a。 "\ NS";
エコー「6である必要があります:」。 $ a。 "\ NS";
エコー "
後置デクリメント
";$ a = 5;
echo "Should be 5:"。 $ a--。 "\ NS";
エコー "
プレフィックスのデクリメント
";$ a = 5;
echo "Should be 4:"。 -$ a。 "\ NS";
echo "Should be 4:"。 $ a。 "\ NS";
?>
PHPの代入演算
基本的な演算子のように見えます =
..。 一見、この演算子は等しいように見えるかもしれません。 実際、そうではありません。 事実上、代入演算子は、左のオペランドが右の式の値に設定されることを意味します(つまり、結果の値に設定されます)。 結合された演算子-これらは、変数の以前の値を後続の操作に使用できるようにする演算子です(文字列変数(テキスト付き)に追加するか、数値を追加します)。
$ a =($ b = 2)+ 4; //結果:$ aは6に設定され、$ bは2に設定されます。
$ a = 2;
$ a + = 3; //書き込みと同様に$ aを5に設定します:$ a = $ a + 3;
$ b = "こんにちは";
$ b。= "Peace!"; // $ b = $ bと同様に、$ bを "Hello World!"に設定します。 "三!";
もあります 比較演算と 頭の体操、しかし、次のレッスンでそれらについて話します。 すぐに大量の情報であなたを怖がらせないようにします!)
以前に尋ねた質問を新しい詳細で続けます。つまり、クラウド内のサイト、テーマ-デフォルト3.0、can_use_smarty = true製品サブページでは、Smartyコードは非常にうまく機能し、必要な変数にアクセスして表示することができます。説明 ...
こんにちは。 checkout.htmlファイルには、変数$ cart_total = $ wa-> shop-> cart-> total()があり、最終的なコストが格納されます。 そして、このコストを配送コストと注文コストに分割して、すべてをサイトに持ち込むにはどうすればよいですか?ありがとうございます。
解決策があります
こんにちは、教えてください、プリズ。 私はいくつかの製品IDを持っています。 たとえば、1,3,5です。$ wa-> shop-> product()からデータを取得したいと思います。 これら3つのIDの製品データに変数を割り当てる必要があります。どうすればよいですか? に強くない...
このようなもの(私はメモリから書き込みます、チェックする必要があります)($ all_my_products = $ wa-> shop-> products())(foreach $ all_my_products as $ ab)
($ ab | var_dump)(/ foreach)
店頭の3つの価格を同時に表示したい解決策があります
こんにちは! IMには、購入、取り消し線、小売の3つの標準価格があります。 また、Multi-priceプラグインの助けを借りて、Wholesale、Dealerの2つの追加価格を作成しました。 3つの価格すべてがすべてのバイヤーに反映される必要がありますが、クライアントが...
質問は閉じられました-みんなはすでにそれをやっています。
使用可能な変数のリストを表示できるクエリ解決策があります
(debug)と(wa_dumpc($ order))以外に、ページで使用可能な変数を表示するために開発で使用できるものを教えてください...開発で使用できる構造とクエリは何ですか?
(wa_tpl_vars)-現在のテンプレートに渡されたすべての変数を表示できるヘルパー....この質問についてはすでに説明しました。
解決策があります
こんにちは、私はphpで何も理解していません、ただあります 一般的な概念、ループ、配列などについて。 私はcss、html、bootstap、uikitを使用しています。フレームワークを理解していないため、フレームワークを最大限に活用できません。アクションがどのように機能し、どこで取得できるかがわかりません(...
Smartyテンプレートエンジンの説明を見てください。変数はテンプレートに渡され、生成されてユーザーに渡されます。変数に含まれるものを見つけるには、個別に出力できます($ post | wa_print_r)(foreach $ post.plugins.before as $ plugin => $ output)($ output)(/ foreach)このコードを使用して、キー($プラグイン)と値($ output)。すべての値($ output)をページに出力します。
+1 受け入れられません
チートシートの変数は、注文通知や印刷可能な注文フォームに挿入すると機能しません...
デフォルト2.0テーマの改良
いくつかの設計上の改善を行う必要がありますデフォルト2.01。カテゴリhttps://yadi.sk/i/JazqloIg3ZQUの製品画像の高さを揃えます... 2。出力を変更します 簡単な説明、アイコン付きの追加フィールドを表示します..。
こんにちは!バスケットやカタログ(商品リスト)で、サイズなど、手動で選択した商品の特性を表示する方法を教えてください。1)バスケットにはすでに選択された値があります。 標準テンプレートファイル(product.cart.html).2)製品リスト内..。
私がそれを理解するのを手伝ってください。 エンジンに関するより完全なドキュメントの場所。 つまり、私はすべての賢い変数に興味があります。どのコードで製品カタログ、カート、製品画像、特性などを表示する必要があるかをどのように推測できますか。 と...
解決策があります
こんにちは。 いくつかのドロップダウンメニューを作成する必要がありました。デザインテーマテイストPROを使用したデザインコードを複製することで、サイドバー/ nav.htmlにアクセスしましたが、2番目のメニューを取得できました。 それは同一であり、当然それを支配し始めました。 私が...した途端 ...
デザインテーマのスクリプトに関連付けられているコードの一部をコピーしなくても、簡単なドロップダウンメニューを作成できますが、独自のメニューを作成できます。スクリプトは次のとおりです(テーマテンプレートに貼り付けます)。 350msが出現時間であり、必要に応じて、さらにさまざまな効果を追加できます。 次に、openクラスとmenuクラスの2つのオブジェクトを作成します
アドレスフィールドは複合(サブフィールドで構成)であるため、特定のサブ要素を表示する場合は、どのサブ要素を指定する必要があります。 たとえば、次のようになります($ addr = $ wa-> user( "address"))City:($ addr.data.city)は、連絡先アドレスの配列の最初のアドレスを指します(複数のアドレスが存在する可能性があります:配信アドレス、支払人の住所、仕事、個人など)ドキュメント:http://www.webasyst.ru/developers/docs/features/contacts-app-integration/
+9
同志! 最近、デザインテーマのテンプレートを使用したプラグインの集中作業の問題に直面しました。 それらの。 それは存在しませんでした、それが書かれているいくつかのプラグインがあります:デザインテーマでテンプレートを作成し、それからそれが使用されるなど...それは判明しました...
解決策があります
店舗と混同しないように、サイト(アプリケーションサイト)では、ページにマークアップが表示されていないことに気づきました。 私はwebasystのウェブサイトに行きました、それらはすべて大丈夫です、それを実装する方法、どこにどのコードを挿入するのですか? そして、なぜそれがデフォルトではないのですか?
サイト-ページ-ページを選択し、上部のページ設定-ソーシャルネットワークセクション。 PHPコード出力 3つのメインファイル(index.php)、javascriptを含むファイル、およびphpファイルがあります。phpファイルは、この方法でjavascriptファイルに接続されます。varJSONReviewsGeneratorReference= "phpファイルへのパス"; しかし、shopscriptのphpコードは使用できないことが判明しました(... 誰が知っているか教えてください。 私はテーマ2のデザインを持っています。名前と価格ですべての商品を表示する商品のカタログで、上記の価格と特定の商品の記事を表示する必要があります。 テーマ開発者に連絡したところ、変数がわからないとのことです。 どのように... 12年前 注意すべきちょっとした落とし穴: RegisterGlobalsおよび関連をオフにしてから、get_defined_vars()を使用すると、次のように表示される場合があります。 配列 [_POST] =>配列() ) 印刷 "
[グローバル] =>配列
[グローバル] =>配列
*再帰*
[_POST] =>配列()
[_GET] =>配列()
[_COOKIE] =>配列()
[_FILES] =>配列()
)
[_GET] =>配列()
[_COOKIE] =>配列()
[_FILES] =>配列()
?>
$ _SERVERがそこにないことに注意してください。phpはどこかで使用されている場合にのみスーパーグローバル$ _SERVERをロードするようです。これを行うことができます。"。htmlspecialchars(print_r(get_defined_vars()、true))。"
"
;
印刷 " "。htmlspecialchars(print_r($ _SERVER、true))。"
"
;
?>
そして、$ _ SERVERが両方のリストに表示されます。 どちらにしても悪いことは何も起こらないので、それは「本当に落とし穴ではない」と思いますが、それでも興味深い好奇心です。
6年前
get_defined_vars()は、関数を呼び出した時点でのみ変数を取得するため、現在のスコープ内で定義された変数を取得する簡単な方法があります。
// phpスクリプトの一番上
$ vars = get_defined_vars();
//今あなたの仕事をします
$ foo = "foo";
$ bar = "bar";
//現在のスコープで定義されているすべての変数を取得します
$ vars = array_diff(get_defined_vars()、$ vars);
エコー "
" ;" ;
print_r($ vars);
エコー "
?>
15年前
これは、表示または電子メール用のデバッグレポートを生成する関数です。
get_defined_varsを使用します。 なしで詳細なスナップショットを取得するのに最適
ユーザー入力に依存します。
function generateDebugReport($メソッド、$ defined_vars、$ email = "undefined")(
//表示または電子メールで送信するデバッグレポートを作成する関数。
//使用法:generateDebugReport(method、get_defined_vars()、email);
//メソッドは「ブラウザ」または「メール」です。
//「get_defined_vars」によって返されるキーの無視リストを作成します。
//たとえば、HTTP_POST_VARS、HTTP_GET_VARSなどは
//冗長(_POST、_GETと同じ)
//セキュリティ上の理由で無視したい変数も含めます-つまり PHPSESSID。
$ ignorelist = array( "HTTP_POST_VARS"、 "HTTP_GET_VARS"、
"HTTP_COOKIE_VARS"、 "HTTP_SERVER_VARS"、
"HTTP_ENV_VARS"、 "HTTP_SESSION_VARS"、
"_ENV"、 "PHPSESSID"、 "SESS_DBUSER"、
"SESS_DBPASS"、 "HTTP_COOKIE");
$タイムスタンプ=日付( "m / d / y h:m:s");
$ message = "デバッグレポートが作成されました$ timestamp \ n";
//適切な測定のために最後のSQLエラーを取得します。ここで、$ linkはリソース識別子です。
// mysql_connectの場合。 データベースまたは抽象化設定をコメントアウトまたは変更します。
グローバル$リンク;
$ sql_error = mysql_error($ link);
if($ sql_error)(
$ message。= "\ nMysqlメッセージ:\ n"。 mysql_error($リンク);
}
// MySQLを終了します
//ここで再帰関数を使用できます。 あなたはアイデアを得る;-)
foreach($ defined_vars as $ key => $ val)(
if(is_array($ val)&&!in_array($ key、$ ignorelist)&& count($ val)> 0)(
$メッセージ。= "\ n $キー配列(キー=値):\ n";
foreach($ val as $ subkey => $ subval)(
if(!in_array($ subkey、$ ignorelist)&&!is_array($ subval))(
$メッセージ。= $サブキー。 "="。 $ subval。 "\ NS";
}
elseif(!in_array($ subkey、$ ignorelist)&& is_array($ subval))(
foreach($ subval as $ subsubkey => $ subsubval)(
if(!in_array($ subsubkey、$ ignorelist))(
$メッセージ。= $サブサブキー。 "="。 $ subsubval。 "\ NS" ;
}
}
}
}
}
elseif(! is_array($ val)&&! in_array($ key、$ ignorelist)&& $ val)(
$メッセージ。= "\ nVariable"。 $キー。 "="。 $ val。 "\ NS";
}
}
If($ method == "browser")(
エコーnl2br($メッセージ);
}
elseif($ method == "email")(
if($ email == "undefined")(
$ email = $ _SERVER ["SERVER_ADMIN"];
}
$ mresult = mail($ email、 "Debug Reportfor"。$ _ ENV ["HOSTNAME"]。 ""、$ message);
if($ mresult == 1)(
エコー 「デバッグレポートが正常に送信されました。\ N」;
}
そうしないと (
エコー 「デバッグレポートの送信に失敗しました。\ N」;
}
}
}
?>
17年前
get_defined_varsオブジェクトをXMLに変換する簡単なルーチン。
関数obj2xml($ v、$インデント= "")(
while(list($ key、$ val)= each($ v))(
if($ key == "__attr")続行;
// __ attrを確認します
if(is_object($ val-> __attr))(
while(list($ key2、$ val2)= each($ val-> __attr))(
$ attr。= "$ key2 = \" $ val2 \ "";
}
}
else $ attr = "";
if(is_array($ val)|| is_object($ val))(
印刷( "$インデント<
$key$attr
>\ NS ");
obj2xml($ val、$ indent。 "");
印刷( "$インデント
$key
>\ NS ");
}
else print( "$インデント<
$key$attr
>$ val
$key
>\ NS ");
}
}
//サンプルオブジェクト
$ x->名前->最初= "ジョン";
$ x->名前->最後= "スミス";
$ x-> arr ["Fruit"] = "Bannana";
$ x-> arr ["Veg"] = "Carrot";
$ y->顧客= $ x;
$ y->顧客-> __ attr-> id = "176C4";
$ z = get_defined_vars();
obj2xml($ z ["y"]);
?>
出力します:
10年前
注意として、get_defined_vars()は変数参照のセットを返しません(私が望んでいたように)。 例えば:
//変数を定義します
$ my_var = "foo";
//定義された変数のリストを取得します
$ defined_vars = get_defined_vars();
//ここで、返された配列を介して値を変更しようとします
$ defined_vars ["my_var"] = "bar";
echo $ my_var、 "\ n";
?>
「foo」(元の値)を出力します。 「get_defined_vars()に参照を作成するためのオプションの引数があればいいのですが、それはかなり特殊なリクエストだと思います。次のような方法で自分で(あまり便利ではありませんが)実行できます。
$ defined_vars = array();
$ var_names = array_keys(get_defined_vars());
foreach($ var_names as $ var_name)
{
$ defined_vars [$ var_name] =&$ $ var_name;
}
?>
1年前
get_defined_varsにある「this」について以前にここに投稿しました。
「常にそこにあるとは限りませんが、場合によっては不可解に表示されます。
Php -r "
クラステスト(
パブリック関数a()(var_dump(array_keys(get_defined_vars())); $ a = 123;)
パブリック関数b()(var_dump(array_keys(get_defined_vars())); $ this;)
}
$ t =新しいテスト();
$ t-> a();
$ t-> b();
"
配列 ()
配列( "this")
これはPHP7.2では発生しませんが、PHP5.6では発生します。
1年前
ここでのいくつかのコメントは、この関数が参照を返さないことを指摘しています。 ただし、名前は返され、名前は「参照」です。
私はそれを参照に変換するここでの提案をお勧めしません。
パブリック関数x($ a、$ b、$ c)(
foreach(array_keys(get_defined_vars())as $ key)
if($ key!== "this")
$ this-> y($($ key));
}
パブリック関数y(&$入力)(
$入力++;
}
$()の代わりに$$を使用することもできます。
私は非常に一般的なコードを作成するためにいくつかの奇抜なことをしましたが、「上記のようなことをする必要はありませんでした。それでも機能しない可能性があります(ただし、$ a [$キー]と同じです)。
$$ key ++を実行することもできますが、「ダイナミックが有益でない場合にダイナミックを使用する」という恐ろしいほど悪いコードは「見たことがありません」。
「そのようなことをしている場合は、さらに精査してください。
Windowsの環境変数(環境)には、システム設定とユーザーの環境に関するさまざまな情報が含まれています。 ユーザー、システム、およびプロセス環境変数を区別します。
Windowsで環境変数の内容を表示する最も簡単な方法は、システムプロパティを開くことです( sysdm.cpl)->詳細->環境変数。ご覧のとおり、開いたセクションには2つのセクションがあります。上のセクションにはユーザーの環境変数が含まれ、下のセクションにはシステム変数が含まれます。
さらに、環境変数はシステムレジストリに保存されます。 カスタム変数はセクションに保存されます。 全身-で HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment.
Windowsコマンドラインですべての環境変数の値を表示できます。 コマンドは簡単です:
このコマンドは、環境変数とその値を一覧表示します。
PowerShellでは、次のコマンドを使用してすべての環境変数を表示できます。
1つの変数の値のみを出力する場合は、echoコマンドを使用する必要があり、変数の名前はパーセント記号で囲む必要があります。 例えば、
エコー%systemroot%
セット> c:\ tmp \ env_var.txt
プロセス固有の環境変数は、無料で取得できます ProcessExplorerユーティリティ(Sysinternalsから)。 プロセスのプロパティを開いてタブに移動するだけで十分です 環境.
このレッスンでは、PHP変数のスコープについて説明します。 ローカルスコープとグローバルスコープの違いを説明し、関数内のグローバル変数にアクセスする方法、スーパーグローバルを操作する方法、および静的変数を作成する方法を示します。
PHPの学習を開始し、関数とオブジェクトの操作を開始すると、変数のスコープは少し混乱します。 幸い、この点に関するPHPのルールは、(他のプログラミング言語と比較して)非常に理解しやすいものです。
スコープとは何ですか?
変数スコープは、変数が定義されたコンテキストであり、変数にアクセスできる場所です。 PHPには2つの変数スコープがあります。
- グローバル-変数はスクリプトのどこからでもアクセスできます
- ローカル-変数は、それらが定義された関数内でのみアクセスできます
可変スコープ、特にローカルスコープを使用すると、コードの管理がはるかに簡単になります。 すべての変数がグローバルである場合、スクリプト内のどこでも変更できます。 スクリプトのさまざまな部分が同じ名前の変数を使用することが非常に多いため、これは混乱と大きなスクリプトにつながります。 ローカルコンテキストをスコープすることにより、変数にアクセスできるコードの境界を定義し、コードをより堅牢でモジュール式にし、デバッグを容易にします。
グローバルスコープの変数はグローバルと呼ばれ、ローカルスコープの変数はローカルと呼ばれます。
これは、グローバル変数とローカル変数がどのように機能するかの例です。
";)sayHello(); echo"値\ $ globalName: "$ globalName"
"; echo"値\ $ localName: "$ localName"
";
?>
こんにちはハリー! $ GlobalName値: "Zoe" $ localName値: ""
このスクリプトでは、2つの変数を作成しました。
- $ globalName- これは グローバル変数
- $ localName- これは ローカル sayHello()関数内に作成される変数。
変数と関数を作成した後、スクリプトはsayHello()を呼び出し、「HelloHarry!」を出力します。 ..。 次に、スクリプトは2つの変数の値をエコーしようとします。 何が起こっているのか:
- なぜなら $ globalName関数の外部で作成されたため、スクリプト内のどこでも使用できるため、「Zoya」が表示されます。
- $ localName sayHello()関数内でのみ使用できます。 エコー式は関数の外部にあるため、PHPはローカル変数へのアクセスを許可しません。 代わりに、PHPは、コードが$ localNameという名前の新しい変数を作成すると想定します。この変数は、空の文字列のデフォルト値を受け取ります。 これが、echoの2番目の呼び出しが$ localName変数の値 ""を出力する理由です。
関数内のグローバル変数へのアクセス
グローバル変数にアクセスするには 機能不全彼女の名前を書いてください。 しかし、グローバル変数にアクセスするには 内部機能、最初に、globalキーワードを使用して、関数で変数をグローバルとして宣言する必要があります。
Function myFunction()(global $ globalVariable; //グローバル変数へのアクセス$ globalVariable)
そうでない場合、PHPは、ローカル変数を作成または使用していると見なします。
関数内でグローバル変数を使用するスクリプトの例を次に示します。
"; global $ globalName; echo" Hello $ globalName!
";)sayHello();?>
実行すると、スクリプトは次のように出力します。
こんにちはハリー! こんにちはゾヤ!
sayHello()関数は、globalキーワードを使用して、$ globalName変数をグローバルとして宣言します。 次に、彼女は変数にアクセスしてその値( "Zoya")を表示できます。
スーパーグローバルとは何ですか?
PHPには、さまざまな情報を含む事前定義されたグローバル配列の特別なセットがあります。 このような配列は スーパーグローバル、内部関数空間を含むスクリプト内のどこからでもアクセスでき、globalキーワードを使用して定義する必要がないためです。
PHP5.3で利用可能なスーパーグローバルのリストは次のとおりです。
- $ GLOBALS-スクリプト内のすべてのグローバル変数のリスト(スーパーグローバルを除く)
- $ _GET-GETリクエストを使用してブラウザによって送信されたすべてのフォームフィールドのリストが含まれます
- $ _POST-POSTリクエストを使用してブラウザによって送信されたすべてのフォームフィールドのリストが含まれます
- $ _COOKIE-ブラウザによって送信されたすべてのCookieのリストが含まれています
- $ _REQUEST- $ _GET、$ _POST、$ _ COOKIE配列に含まれるすべてのキー/値の組み合わせが含まれます
- $ _FILES-ブラウザによってロードされたすべてのファイルのリストが含まれています
- $ _SESSION-現在のブラウザのセッション変数を保存して使用できます
- $ _SERVER-実行中のスクリプトのファイル名やブラウザのIPアドレスなど、サーバーに関する情報が含まれます。
- $ _ENV-CGI変数など、PHPに渡される環境変数のリストが含まれます。
上記のスクリプトをURL文字列http://www.example.com/script.php?yourName=Fredで実行すると、次のように出力されます。
こんにちはフレッド!
警告!実際のスクリプトでは、セキュリティが弱いため、このようなデータ転送は絶対に使用しないでください。 常にデータをチェックまたはフィルタリングする必要があります。
$ GLOBALSスーパーグローバルは、globalキーワードを使用せずに関数内のグローバル変数へのアクセスを整理できるため、非常に便利に使用できます。 例えば:
";)sayHello(); //" Hello、Zoe! "?>を出力します
静的変数:それらはどこかにあります
関数内にローカル変数を作成すると、関数の実行中にのみ存在します。 関数が終了すると、ローカル変数は消えます。 関数が再度呼び出されると、新しいローカル変数が作成されます。
これはほとんどの場合うまく機能します。 このように、関数は自己完結型であり、呼び出されるたびに常に同じように機能します。
ただし、関数呼び出し間でその値を「記憶」するローカル変数を作成すると便利な場合があります。 このような変数は静的と呼ばれます。
関数で静的変数を作成するには、変数名の前にstaticキーワードを使用し、必ず初期値を指定する必要があります。 例えば:
関数myFunction()(static $ myVariable = 0;)
静的変数を使用するのが便利な状況を考えてみましょう。 呼び出されたときにウィジェットを作成し、すでに作成されたウィジェットの数を表示する関数を作成するとします。 ローカル変数を使用して、次のようなコードを記述してみてください。
"; echo createWidget()。"すでに作成しました。
"; echo createWidget()。"すでに作成しました。>
";
?>
ただし、関数が呼び出されるたびに$ numWidgets変数が作成されるため、次の結果が得られます。
いくつかのウィジェットを作成します... 1すでに作成しました。 1すでに作成しました。 1すでに作成しました。
ただし、静的変数を使用することで、ある関数呼び出しから次の関数呼び出しに値を格納できます。
"; echo createWidget()。"すでに作成しました。
"; echo createWidget()。"すでに作成しました。
"; echo createWidget()。">すでに作成しました。
";
?>
スクリプトは期待される出力を生成します:
いくつかのウィジェットを作成します... 1すでに作成しました。 2すでに作成しました。 3すでに作成しました。
静的変数は関数呼び出し間でその値を保持しますが、スクリプトが実行されたときにのみ有効です。 スクリプトが実行を終了するとすぐに、ローカル変数とグローバル変数だけでなく、すべての静的変数が破棄されます。
それで全部です! PHPのドキュメントを頻繁に確認してください。