PHPカスタム関数の変数スコー...LOGIN

PHPカスタム関数の変数スコープ

前の章の関数定義部分を学習することで、いくつかの異なるルールがわかりました:

関数が定義されるとき、括弧内の変数は仮パラメーター (仮パラメーター) であり、関数の外側の変数とは同じではありません。あらゆる関係。関数内で宣言された変数は関数内でのみ実行され、関数外の変数とは関係ありません。

しかし、実際の処理では、

関数本体で定義した変数を関数外で使いたい

関数本体外の変数を関数内で使いたい

これ スーパーグローバル変数を使用する必要がある場合があります。前の知識ポイントを確認してみましょう:

グローバル変数名$_COOKIE$_SESSION$_FILES$_GET$_POST $_REQ UEST の値渡し結果の両方を取得できます

実験を通じて外部変数 (スーパー グローバル変数) の特性を観察し、この章の冒頭でまとめたルールを破ってみましょう:

HTML コンテンツを記述するために global.html ページを定義しましょう:

<html>
   <head>
       <title>超全局数组实验</title>
   </head>
   <body>
       <!--先用POST来实验,以后你可以改成GET哟 -->
       <form action="glob.php" method="post">
           <input type="text" name="hongniu" /><br />

           <input type="submit" value="提交" />
       </form>

   </body>
</html>

HTML コンテンツを渡しますフォームフォームが glob.php ページに送信されます。今すぐ glob.php を書きましょう:

<?php 
function demo(){ 
echo $_POST['hongniu']; 
} 
demo(); 
?>

この小さな例を通して、スーパーグローバル $_POST と他のスーパーグローバル変数 (外部変数) が関数内でも使用できます。この記事の冒頭で述べたように、変数のスコープに制限はありません。 実際、宣言された変数はすべて $GLOBALS 配列の下に配置されます。例:

<?php
$hello = 10;

echo $GLOBALS['hello'].'<br />';

$GLOBALS['hello'] = '我爱你';

echo $hello;

?>

上記の例を通じて、$variable name が $GLOBALS['variable name'] と同等であることがわかります。すべての変数は $GLOBALS に配置されます。 $GLOBALS もグローバルです。

これで、関数本体内の変数 (ローカル変数) を関数の外で使用するという目標を達成できます。関数内で関数外の変数を使用することもできます。

1. $GLOBLAS を介して外部変数を読み取る

<?php

$one = 10;

function demo(){
   $two = 100;

   $result = $two + $GLOBALS['one'];

   return $result;

}
//你会发现结果变成了110
echo demo();

?>

上の例では、関数本体で使用するために、$GLOBALS を介して関数本体の外にある変数を取得します。したがって、関数外の変数を関数本体内で使用できないという制限は破られます。

2. $GLOBALS を使用して関数内の外部変数を変更します

<?php

$hongniu = '我是一个兵,来自老百姓';

function test(){

   echo '执行了函数test哟<br />';
   //调用test()函数,将通过$GLOBALS['hongniu'],把$hongniu的值改变掉

   $GLOBALS['hongniu'] = '帮助别人很快乐';
}

test();
//发现是不是输出的值变了呀?
echo $hongniu;

?>

上記の例を通じて、$GLOBALS['hongniu'] を通じて $hongniu の値が変更されることがわかりました。出力されると、値が変更されました。

3. $GLOBLAS を使用して関数内にグローバル変数を作成します

<?php

function hello(){

   $GLOBALS['que'] = '提神喝茶更好哟';

   echo '你调了一下函数hello<br />';
}

hello();

echo $que;

?>

上の例では、関数 hello() を呼び出した後、関数の外で echo $que を実行できることがわかりました。結果がわかります: 爽やかなお茶の方が良いです。関数内で宣言された変数は、$GLOBALS を通じて変数を宣言することによっても表示できることを理解しています。

以下の知識は[理解]レベルであり、グローバル変数を宣言するためにこの方法を使用することはますます少なくなります。関数内で global キーワードの後に​​ 1 つ以上の変数を使用すると、変数がグローバル変数に変わります。形式は次のとおりです。

global $variable1[, variable2,....variablen]

in globalその後に、カンマで区切って 1 つ以上の変数を続けます。

<?php
$a = 10;
$b = 100;
function test(){
   global $a , $b;
   echo $a + $b;
}
//结果是不是显示出来了?
test();
?>

上記の例では、グローバル キーワードの後に​​未作成の変数を指定し、関数本体で変数値を定義し、変数値を変更してみることもできます。実際には $GLOBALS と同じですが、使い方が異なります。

注:
global の後に $variable = value を書かないでください。


グローバル
発音: [ˈgləʊbl]
説明: グローバル、グローバル

次のセクション
<?php function hello(){ $GLOBALS['que'] = '提神喝茶更好哟'; echo '你调了一下函数hello<br />'; } hello(); echo $que; ?>
コースウェア
    なし
関数の説明
セッションコントロールに渡されたCookie値を取得します
値セッションの
ファイルアップロードの結果を取得
get値の受け渡しの結果を取得
POST値の受け渡しの結果を取得
getの値渡し結果とPost