博客
关于我
PHP常量、变量作用域详解(一)
阅读量:793 次
发布时间:2023-03-01

本文共 1459 字,大约阅读时间需要 4 分钟。

PHP 变量作用域与可见性

在编程中,变量的作用域决定了它可以在哪些地方被访问。PHP 中的变量作用域主要分为全局变量和局部变量两种类型。

变量作用域的基本概念

每个 PHP 变量都有自己的作用域。全局变量可以在整个脚本中访问,而局部变量只能在声明它的函数或代码块中使用。例如,在一个 PHP 页面中定义的变量,页面的其他部分可以访问它,但其他页面通常无法访问,除非使用特殊的全局变量。 

包含文件中的变量可见性

包含文件像脚本一样工作,因此在 include() 之前的变量可以供包含文件使用,而包含文件中的变量也可以供 include() 之后的父脚本使用。这使得包含文件能够共享变量,但需要谨慎管理以避免数据冲突。

函数内部变量的作用域

函数内部的变量和外部的变量在名称上可能重叠,但它们是完全不同的变量。函数内部的变量无法直接访问外部变量,除非使用 global 语句将其声明为全局变量。例如:

 

在这个例子中,函数内部的 $var 与外部的 $var 是同一个变量,值也会保持一致。

避免变量作用域冲突的方法

除了使用 global 语句外,还可以通过使用超全局变量来避免作用域问题。例如,$_GET$_POST 等变量在函数内是自动可访问的。此外,可以通过将变量添加到 $GLOBALS 数组中来实现这一点。

全局变量的可见性

全局变量在整个脚本中都是可见的,但它们在函数内部是局部变量。要在函数内部访问全局变量,需要使用 global 语句,并确保变量名称一致。例如:

 

在这个例子中,函数内部的 $var 与外部的全局变量 $var 是同一个变量。

静态变量的作用域

静态变量在函数内部创建,并且在函数的多次执行过程中保持其值不变。静态变量无法在函数外部访问,但它们可以在函数的递归调用中使用。例如:

每次调用 staticDemo() 时,$count 的值会增加,但不会重置为初始值。

函数内部变量与全局变量的区别

函数内部变量和全局变量可以有相同的名称,但它们是完全不同的变量。函数内部变量无法直接访问外部变量,除非使用 global 语句。例如:

 

在这个例子中,函数内部的 $var 是一个局部变量,无法访问外部的全局变量 $var。如果要在函数内部访问外部的全局变量,需要使用 global 语句:

这样,函数内部的 $var 就可以访问外部的全局变量 $var

超级全局变量的完整列表

PHP 提供了多个超级全局变量,这些变量可以在整个脚本中访问,并且它们的值会在其他页面中保持一致。常见的超级全局变量包括:

  • $GLOBALS:所有全局变量的数组
  • $_SERVER:服务器环境变量数组
  • $_POST:通过 POST 方法传递的变量数组
  • $_GET:通过 GET 方法传递的变量数组
  • $_COOKIE:cookie 变量数组
  • $_FILES:与文件上传相关的变量数组
  • $_ENV:环境变量数组
  • $_REQUEST:所有用户输入的变量数组(包括 $_GET$_POST$_COOKIE
  • $_SESSION:会话变量数组

实例讲解

以下是两个实例,说明变量作用域的使用:

在这个例子中,$a 定义在函数外部,函数 sendValue 接受 $a 作为参数,因此可以正常运行。

在这个例子中,函数 sendValue 没有接收 $a 作为参数,因此无法访问外部的 $a,代码无法正常运行。

通过这些实例可以看出,函数内部的变量与外部的变量在名称上可以重叠,但它们的作用域和可访问性是不同的。

转载地址:http://fptfk.baihongyu.com/

你可能感兴趣的文章
PAT甲级——1006 Sign In and Sign Out (25分)
查看>>
PAT甲级——1007 Maximum Subsequence Sum (25分)
查看>>
PAT甲级——1009 Product of Polynomials (25分)(最后一个测试点段错误)
查看>>
PayPal网站付款标准版(for PHP)
查看>>
Paystack Android SDK 集成与使用指南
查看>>
pbf格式详解,javascript加载导出pbf文件示例
查看>>
PbootCMS entrance.php SQL注入漏洞复现
查看>>
PbootCMS 前台RCE漏洞复现
查看>>
PBT
查看>>
PCA---主成成分分析
查看>>
PCA降维demo
查看>>
SharePoint 2013 图文开发系列之定义站点模板
查看>>
PCI Express学习篇:Power Management(二)
查看>>
pcie握手机制_【博文连载】PCIe扫盲——Ack/Nak 机制详解(一)
查看>>
PC史上最悲剧的16次失败
查看>>
PC端恶意代码分析Lab1.1-5.1,从零基础到精通,收藏这篇就够了!
查看>>
PC端编辑 但能在PC端模拟移动端预览的富文本编辑器
查看>>
PDB文件:每个开发人员都必须知道的
查看>>
springMVC学习(二)
查看>>
PDF中的Pandoc语法突出显示不起作用
查看>>