php变量作用域分别的是,PHP 变量作用域

news/2024/7/5 20:31:41

南宫晟醺

PHP 变量作用域

变量的作用域是脚本中变量可被引用和使用的部分,PHP 中有四种不同的变量作用域:

序号

作用域

描述

1

local

局部作用域

2

global

全局作用域

3

static

静态作用域

4

parameter

函数参数作用域

1、local(本地的)—— 局部变量的作用域

在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问。

function test()

{

$a = 15;

echo "内部输出结果:" . $a;

}

echo "外部输出结果:" . $a; // 无法访问变量 a

echo PHP_EOL;

test();

?>

输出结果:

外部输出结果:

内部输出结果:15

2、global(总体的)—— 全局变量的作用域

在所有函数外部定义的变量是全局变量,除了函数外,全局变量可以被脚本中的任何部分访问、要在一个函数中访问一个全局变量,需要使用 global 关键字。

$x = 5;

$y = 10;

$z = 0;

function test()

{

global$x,$y,$z;

$z = $x + $y;

}

test();

echo $z;

?>

结果:15

PHP 将所有的全局变量存储在一个名为 $GLOBALS[index] 的数组里,index 保存变量的名称。

这个数组可以在函数内部访问,也可以直接用来更新全局变量。

$x = 5;

$y = 10;

$z = 0;

function test()

{

$GLOBALS['z'] = $GLOBALS['x']+$GLOBALS['y'];

}

Test();

echo $z;

?>

结果:15

3、static(静态的)—— static 作用域

当一个函数执行完成时,它的所有变量通常都会被删除。

然而,有时需要局部变量不要被删除,要做到这一点,请在您第一次声明变量时使用 static 关键字。

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。

function test() {

static $x=0;

echo $x . " ";

$x++;

}

test();

test();

test();

test();

?>

结果:0 1 2 3

每次调用函数时, 该变量将会保留请前函的前被调用的值一次。

4、parameter(参数)——参数作用域

参数是通过调用代码将值传递给函数的局部变量。

关于局部变量和全局变量的优先级,因为在PHP中函数都有自己单独的作用域,所以在局部变量的优先级要大于全局变量(在你不声明这个变量之前),声明之后此变量就变成了局部变量如果修改值那么全局变量的值也会改变。

$a = 10;

$b = 5;

function test()

{

$a = 15;

$b = 5;

$z = $a-$b;

echo $z;

}

test();

function test1()

{

global $a,$b;

$a = 15;

$b = 5;

$z = $a-$b;

echo PHP_EOL;

echo $z;

}

test1();

function test2()

{

global $a,$b;

$z= $a-$b;

echo PHP_EOL;

echo $z;

}

test2();

?>

结果:10 10 10


http://www.niftyadmin.cn/n/4084345.html

相关文章

什么是I2C协议

什么是I2C协议 转载自:http://blog.sina.com.cn/s/blog_6001b7cf0100dsef.html一. I2C协议技术性能: 工作速率有100K和400K两种; 支持多机通讯; 支持多主控模块,但同一时刻只允许有一个主控; 由数据线…

Java 大地坐标转经纬度,经纬度与WGS84坐标转换

如下代码,输出为:WGS84: -2175790.73969891 4461032.11207734 3992337.79032463BLH: 38.9999999999998 116.000000000000 33.0000069718808Module CorrTrans!// WGS84 系统BLH坐标与空间直角坐标转换!// Fortran Coder http://fcode.cn!…

机器学习工具

机器学习工具 参考网站: https://www.zhihu.com/question/20472776(知乎:学习机器学习有哪些好工具推荐?) http://blog.csdn.net/myarrow/article/details/50608334(CSDN:机器学习工具汇总&…

js阻止默认事件、拖拽等等

1.自定义右键菜单&#xff1a; 1 <!DOCTYPE HTML>2 <html>3 <head>4 <meta charset"utf-8">5 <title>无标题文档</title>6 <style>7 * {margin:0; padding:0; list-style:none;}8 #div1 {position:absolute; width:80px; …

贴一个MSDN上关于IFormatProvider接口的例子

Effect C#的第5条讲到了IFormatProvider接口&#xff0c;不太明白于是找到了这个比较具有说明性的例子。 [C#] // Sample for the IFormatProvider interface and // the IFormatProvider.GetFormat( Type ) method. using System;// This class implements the "Ra"…

PHp批量推送数据太慢,PHP非壅塞批量推送数据_后端开发

本日看到论坛内里有人问如PHP何批量非壅塞向服务器推送数据&#xff0c;这里也许总结下。相干引荐&#xff1a;《PHP教程》1、最简朴的要领&#xff1a;一个剧本同时跑屡次&#xff0c;用参数来跑指定局限。假如要推送10000用户&#xff0c;能够每100个用户运转一个剧本(剧本逻…

ipa 打包遇到的坑

1.xcode 打包 并上传至 appstore 审核 2.预留邮箱 收取 appstore 的审核结果 3.审核通过以后&#xff0c;通过 iTunes Connect 上传正式文件至 appstore 网址&#xff1a;https://itunesconnect.apple.com/login 转自&#xff1a;http://www.cnblogs.com/mddblog/p/471…

centos7下mysql5.6的主从复制

一、mysql主从复制介绍mysql的主从复制并不是数据库磁盘上的文件直接拷贝&#xff0c;而是通过逻辑的binlog日志复制到要同步的服务器本地&#xff0c;然后由本地的线程读取日志里面的sql语句&#xff0c;重新应用到mysql数据库中。mysql数据库支持单向&#xff0c;双向&#x…