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

PHP中全局变量global详解

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

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

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

实例代码如下:

1

2

3

4

<?php

$a = 1;

include &#39;b.inc&#39;;

?>

로그인 후 복사

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

实例代码如下:

1

2

3

4

5

6

7

<?php

$a = 1; /* global scope */

function Test() {

    echo $a; /* reference to local scope variable */

}

Test();

?>

로그인 후 복사

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

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

实例代码如下:

1

2

3

4

5

6

7

8

<?php

$a = 0;

function Test() {

    $a = 1;

}

Test();

echo $a;

?>

로그인 후 복사

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

实例代码如下:

1

2

3

4

5

6

7

8

9

<?php

$a = 0;

function Test() {

    global $a; //申明函数体Test内使用的$a变量为global全局变量

    $a = 1;

}

Test();

echo $a;

?>

로그인 후 복사

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

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

//A.php 文件

实例代码如下:

1

2

3

4

5

6

7

8

9

<?php

function Test_Global() {

    include &#39;B.php&#39;;

    Test();

}

$a = 0;

Test_Global();

echo $a;

?>

로그인 후 복사

//B.php 文件

1

2

3

4

5

6

<?php

function Test() {

    global $a; //申明函数体Sum内使用的$a变量为global全局变量

    $a = 1;

}

?>

로그인 후 복사

为什么输出的却是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 文件

1

2

3

4

5

6

7

8

9

<?php

function Test_Global() {

    Test();

}

include &#39;B.php&#39;; //将include 从局部Test_Global函数中移出

$a = 0;

Test_Global();

echo $a;

?>

로그인 후 복사

//B.php 文件

1

2

3

4

5

6

<?php

function Test() {

    global $a;

    $a = 1;

}

?>

로그인 후 복사

2.优秀的访问器

实例代码如下:

//A.php 文件

1

2

3

4

5

6

<?php

include &#39;B.php&#39;;

$a = 0;

Set_Global($a);

echo $a;

?>

로그인 후 복사

//B.php 文件

1

2

3

4

5

<?php

function Set_Global(&$var) {

    $var = 1;

}

?>

로그인 후 복사

 


文章网址:

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

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

vue3+vite: src에서 이미지를 동적으로 가져오기 위해 require를 사용할 때 오류를 해결하는 방법 vue3+vite: src에서 이미지를 동적으로 가져오기 위해 require를 사용할 때 오류를 해결하는 방법 May 21, 2023 pm 03:16 PM

vue3+vite: src에서 이미지를 동적으로 가져오기 위해 require를 사용할 때 오류를 해결하는 방법

PHP include와 include_once의 차이점은 무엇입니까 PHP include와 include_once의 차이점은 무엇입니까 Mar 22, 2023 am 10:38 AM

PHP include와 include_once의 차이점은 무엇입니까

require의 용도는 무엇인가요? require의 용도는 무엇인가요? Nov 27, 2023 am 10:03 AM

require의 용도는 무엇인가요?

Xiaomi 메시 시스템 AC1200: 최대 370평방미터를 지원하는 새로운 Wi-Fi 메시 시스템이 전 세계적으로 출시됩니다. Xiaomi 메시 시스템 AC1200: 최대 370평방미터를 지원하는 새로운 Wi-Fi 메시 시스템이 전 세계적으로 출시됩니다. Jun 19, 2024 pm 12:13 PM

Xiaomi 메시 시스템 AC1200: 최대 370평방미터를 지원하는 새로운 Wi-Fi 메시 시스템이 전 세계적으로 출시됩니다.

PHP 헤더의 치명적인 오류를 해결하는 단계: require(): Failed opening require 'data/tdk.php' (include_path='.;C:\php\pear') PHP 헤더의 치명적인 오류를 해결하는 단계: require(): Failed opening require 'data/tdk.php' (include_path='.;C:\php\pear') Nov 27, 2023 pm 12:51 PM

PHP 헤더의 치명적인 오류를 해결하는 단계: require(): Failed opening require 'data/tdk.php' (include_path='.;C:\php\pear')

Hashkey Global은 Binance Platform Coin BNB의 출시를 발표했습니다! Zhao Changpengque는 실수를했습니다 Hashkey Global은 Binance Platform Coin BNB의 출시를 발표했습니다! Zhao Changpengque는 실수를했습니다 Mar 04, 2025 am 06:36 AM

Hashkey Global은 Binance Platform Coin BNB의 출시를 발표했습니다! Zhao Changpengque는 실수를했습니다

Xiaomi, Bluetooth 5.3 및 다양한 포트를 갖춘 저렴한 사운드바 출시 Xiaomi, Bluetooth 5.3 및 다양한 포트를 갖춘 저렴한 사운드바 출시 Oct 01, 2024 am 06:22 AM

Xiaomi, Bluetooth 5.3 및 다양한 포트를 갖춘 저렴한 사운드바 출시

PHP 헤더의 치명적인 오류를 해결하는 단계: require(): 필수 'data/tdk.php'를 열지 못했습니다. PHP 헤더의 치명적인 오류를 해결하는 단계: require(): 필수 'data/tdk.php'를 열지 못했습니다. Nov 27, 2023 am 10:41 AM

PHP 헤더의 치명적인 오류를 해결하는 단계: require(): 필수 'data/tdk.php'를 열지 못했습니다.

See all articles