ホームページ  >  記事  >  バックエンド開発  >  PHP はグローバルを使用して、効果のないグローバル変数に対するソリューションを定義します

PHP はグローバルを使用して、効果のないグローバル変数に対するソリューションを定義します

怪我咯
怪我咯オリジナル
2017-06-19 16:24:472553ブラウズ

global で定義された 変数 は、グローバル変数です。たとえば、関数 内の変数が、関数の外にある同じ名前の変数と PHP の同じ変数ではない場合、この変数を定義するために global を使用します。外部変数変数名と同じ関数の場合、それらは変数になります。いくつかの例を見てみましょう。

PHP 初心者の場合、global キーワードを使用すると、関数の外にある変数が関数内でグローバル化されているにもかかわらず、変数が正しく出力されない (つまり、グローバル変数が無効である) 場合があります。簡単で一般的な例を見てみましょう。

ここには、a.php と b.php の 2 つのページがあります。

b.php ページのコードは次のとおりです:

 <?php 
    $site_name = &#39;CodePlayer&#39;; 
    function sayHi(){ 
        global $site_name; 
        echo "Hello! Welcome to $site_name !"; 
    } 
?>

a.php ページのコードは次のとおりです:

<?php 
    function include_view_page(){ 
        include &#39;b.php&#39;; 
        sayHi();                     
    } 
    include_view_page(); 
?>

上記の例は、a.php ページにアクセスしたときに、welcome ステートメントが表示されることを願っています。正しく表示されるようになります。しかし、残念なことに、ブラウザを使用して a.php ページにアクセスすると、出力結果は次のようになります:

Hello! Welcome to !

つまり、関数 include_view_page() で SayHi() 関数を呼び出すと、 b.php ページのsayHi() 関数内のグローバル $site_name が正しく認識されず、有効になりませんでした。これは一体どういうことなのでしょうか?

実際、b.php ページを include_view_page() 関数に含めると、b.php ページの変数 $site_name は include_view_page() 関数内のスコープに格納されるのと同じになります。ご存知のとおり、関数内の変数をグローバル化すると、実際には関数内のページのグローバル変数への 参照 が確立されます。この例では、$site_name 変数は a.php の include_view_page() 関数内のローカル変数にすぎないため、当然のことながら、関連する呼び出しを行うときに、正しい変数と変数値を取得することはできません。 。

PHP では、関数内にページを含めるとページ内の 変数 のスコープが変更されるという上記の問題に特に注意する必要があります。この状況を回避するには、マルチレベルの include 呼び出しを減らし、関数内で include を使用しないようにする必要があります。さらに、b.php ページで $site_name をグローバル変数の形式で宣言することもできます。コードは次のとおりです。

<?php 
global $site_name; 
$site_name = &#39;CodePlayer&#39;; 
function sayHi(){ 
    global $site_name; 
    echo "Hello! Welcome to $site_name !"; 
} 
?>

たとえば、関数内でグローバル変数を参照するには、まず次のコードを見てください。

<?php  
$var1 = "#####";  
$var2 = "&&&&&"; 
function global_references($use_globals)  
{  
global $var1, $var2;  
if (!$use_globals) {  
$var2 =&$var1; //1 
} else {  
$GLOBALS["var2"] =&$var1; //2 
}  
} 
global_references(false);  
echo "var2 is set to &#39;$var2&#39;<br/>";  
global_references(true);  
echo "var2 is set to &#39;$var2&#39;<br/>";  
?>

出力結果は次のとおりです:

var2 is set to &#39;&&&&&&#39; 
var2 is set to &#39;#####&#39;

Visible、上記のコード: $var2 =&$var1; //1 は関数内でのみ表示されます。

そして $GLOBALS["var2"] =&$var1; はグローバル スコープで表示されます。

以上がPHP はグローバルを使用して、効果のないグローバル変数に対するソリューションを定義しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。