Maison php教程 php手册 PHP中全局变量global详解

PHP中全局变量global详解

May 25, 2016 pm 04:47 PM
global include require

本文章来详细的介绍关于PHP中全局变量global的方法,有需要了解global函数使用方法的朋友可参考本文章.

变量的范围即它定义的上下文背景(也就是它的生效范围).大部分的 PHP 变量只有一个单独的范围.这个单独的范围跨度同样包含了 include 和 require 引入的文件.

实例代码如下:

<?php
$a = 1;
include &#39;b.inc&#39;;
?>
Copier après la connexion

这里变量 $a 将会在包含文件 b.inc 中生效.但是,在用户自定义函数中,一个局部函数范围将被引入.任何用于函数内部的变量按缺省情况将被限制在局部函数范围内.例如:

实例代码如下:

<?php
$a = 1; /* global scope */
function Test() {
    echo $a; /* reference to local scope variable */
}
Test();
?>
Copier après la connexion

这个脚本不会有任何输出,因为 echo 语句引用了一个局部版本的变量 $a,而且在这个范围内,它并没有被赋值.你可能注意到 PHP 的全局变量和 C 语言有一点点不同,在 C 语言中,全局变量在函数中自动生效,除非被局部变量覆盖.这可能引起一些问题,有些人可能不小心就改变了一个全局变量.PHP 中全局变量在函数中使用时必须申明为global.

今天就遇到了php 全局变量不起作用的问题.先上一段简单的代码:

实例代码如下:

<?php
$a = 0;
function Test() {
    $a = 1;
}
Test();
echo $a;
?>
Copier après la connexion

上面的代码中输出是0,那是因为函数体Test内$a变量被缺省设置为局部变量,$a的作用域就是在Test内.修改代码如下

实例代码如下:

<?php
$a = 0;
function Test() {
    global $a; //申明函数体Test内使用的$a变量为global全局变量
    $a = 1;
}
Test();
echo $a;
?>
Copier après la connexion

申明函数体Test内使用的$a变量为global全局变量后,使得$a的作用全局,所以输出为1.

上面的实例只是基本的global全局变量知识,下面我们看看复杂点的:

//A.php 文件

实例代码如下:

<?php
function Test_Global() {
    include &#39;B.php&#39;;
    Test();
}
$a = 0;
Test_Global();
echo $a;
?>
Copier après la connexion

//B.php 文件

<?php
function Test() {
    global $a; //申明函数体Sum内使用的$a变量为global全局变量
    $a = 1;
}
?>
Copier après la connexion

为什么输出的却是0?!!

在用户自定义函数中,一个局部函数范围将被引入.任何用于函数内部的变量按缺省情况将被限制在局部函数范围内(包括include 和 require 导入的文件内的变量)!

解释:A.php文件的内Test_Global是定义好的第三方函数,该函数用include导入了B.php文件内的$a的global全局变量,所以$a被限制在Test_Global局部函数范围内,所以B.php文件内的$a的作用范围都在Test_Global内,而不是作用了整个A.php内….

解决方案:

1. 冲出局部函数

实例代码如下:

//A.php 文件

<?php
function Test_Global() {
    Test();
}
include &#39;B.php&#39;; //将include 从局部Test_Global函数中移出
$a = 0;
Test_Global();
echo $a;
?>
Copier après la connexion

//B.php 文件

<?php
function Test() {
    global $a;
    $a = 1;
}
?>
Copier après la connexion

2.优秀的访问器

实例代码如下:

//A.php 文件

<?php
include &#39;B.php&#39;;
$a = 0;
Set_Global($a);
echo $a;
?>
Copier après la connexion

//B.php 文件

<?php
function Set_Global(&$var) {
    $var = 1;
}
?>
Copier après la connexion

 


文章网址:

随意转载^^但请附上教程地址。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD
Musée à deux points: toutes les expositions et où les trouver
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

vue3+vite : Comment résoudre l'erreur lors de l'utilisation de require pour importer dynamiquement des images dans src vue3+vite : Comment résoudre l'erreur lors de l'utilisation de require pour importer dynamiquement des images dans src May 21, 2023 pm 03:16 PM

vue3+vite:src utilise require pour importer dynamiquement des images et des rapports d'erreurs et des solutions. vue3+vite importe dynamiquement plusieurs images. Si vue3 est développé à l'aide de TypeScript, il y aura un message d'erreur indiquant que requireisnotdefined ne peut pas être utilisé comme imgUrl. :require(' .../assets/test.png') est importé car TypeScript ne prend pas en charge require, donc l'importation est utilisée. Voici comment le résoudre : utilisez waitimport.

Quelle est la différence entre php include et include_once Quelle est la différence entre php include et include_once Mar 22, 2023 am 10:38 AM

Lorsque nous écrivons des pages Web en utilisant PHP, nous devons parfois inclure du code provenant d'autres fichiers PHP dans le fichier PHP actuel. À ce stade, vous pouvez utiliser la fonction include ou include_once pour implémenter l'inclusion de fichiers. Alors, quelle est la différence entre include et include_once ?

Quelles sont les utilisations de require ? Quelles sont les utilisations de require ? Nov 27, 2023 am 10:03 AM

Utilisation de require : 1. Introduire des modules : Dans de nombreux langages de programmation, require est utilisé pour introduire des modules ou des bibliothèques externes afin que les fonctions qu'ils fournissent puissent être utilisées dans le programme. Par exemple, dans Ruby, vous pouvez utiliser require pour charger des bibliothèques ou des modules tiers ; 2. Importer des classes ou des méthodes : dans certains langages de programmation, require est utilisé pour importer des classes ou des méthodes spécifiques afin qu'elles puissent être utilisées dans le fichier actuel. ; 3. Effectuer des tâches spécifiques : dans certains langages ou frameworks de programmation, require est utilisé pour effectuer des tâches ou des fonctions spécifiques.

Xiaomi Mesh System AC1200 : lancement mondial d'un nouveau système maillé Wi-Fi pouvant atteindre 370 mètres carrés Xiaomi Mesh System AC1200 : lancement mondial d'un nouveau système maillé Wi-Fi pouvant atteindre 370 mètres carrés Jun 19, 2024 pm 12:13 PM

Xiaomi a introduit un autre système maillé WLAN pour le marché mondial. Après la mise en vente du routeur AC1200 (environ 69 euros sur Amazon) dans ce pays, le Xiaomi Mesh System AC1200 a été annoncé. Le nouveau produit a récemment été répertorié sur

Étapes pour résoudre l'erreur fatale dans l'en-tête php : require() : échec de l'ouverture requise 'data/tdk.php' (include_path='.;C:\php\pear') Étapes pour résoudre l'erreur fatale dans l'en-tête php : require() : échec de l'ouverture requise 'data/tdk.php' (include_path='.;C:\php\pear') Nov 27, 2023 pm 12:51 PM

Étapes pour résoudre fatalerror:require():Failedopeningrequired'data/tdk.php'(include_path='.;C:phppear') dans l'en-tête PHP Lors du développement de sites Web ou d'applications utilisant PHP, nous rencontrons souvent diverses erreurs. L'une des erreurs courantes est "fatalerror:require():Failed".

Hashkey Global annonce le lancement de Binance Platform Coin BNB! Zhao Changpengque a fait une erreur Hashkey Global annonce le lancement de Binance Platform Coin BNB! Zhao Changpengque a fait une erreur Mar 04, 2025 am 06:36 AM

Hashkey, le premier échange de crypto-monnaie sous licence à Hong Kong, a annoncé sur la plate-forme X le 18 février que sa plateforme de trading internationale HashkeyGlobal a officiellement lancé BNB (Binance Coin). "HashkeyGlobal a ajouté le trading au comptant: BNB accueille les nouveaux utilisateurs: le dépôt ou le commerce BNB pour participer au gisement de 10 000 $ HK et à remporter une récompense de 10 $ HK (premier arrivant le premier servi). Le fondateur Zhao Changpeng (CZ) a déclaré que BNB était dans HashkeyGlobal

Xiaomi lance une barre de son abordable avec Bluetooth 5.3 et de nombreux ports Xiaomi lance une barre de son abordable avec Bluetooth 5.3 et de nombreux ports Oct 01, 2024 am 06:22 AM

Xiaomi a récemment répertorié la Xiaomi Soundbar 2.0ch sur son site Web mondial, ce qui indique qu'un lancement mondial est en attente, bien qu'il n'y ait pas encore d'informations concrètes à ce sujet. Comme d'habitude, Xiaomi révèle toutes les spécifications techniques, mais n'a fourni aucune précision.

Étapes pour résoudre l'erreur fatale dans l'en-tête php : require() : échec de l'ouverture requise 'data/tdk.php' Étapes pour résoudre l'erreur fatale dans l'en-tête php : require() : échec de l'ouverture requise 'data/tdk.php' Nov 27, 2023 am 10:41 AM

Étapes pour résoudre FatalError:require():Failedopeningrequired'data/tdk.php' dans l'en-tête PHP Lors du développement et de la maintenance de sites Web PHP, nous rencontrons souvent diverses erreurs et exceptions. L'une des erreurs courantes est "FatalError:require():Failedopeningrequired'data/tdk.php'".

See all articles