PHP之变量范围

范围跨度

  大部分的PHP变量只有一个单独的范围。这个单独的范围跨度同样包含了include和require引入的文件

  这里变量$a将会在包含文件b.inc中生效

<?php$a = 1;include ‘b.inc‘;?>

函数范围

  在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内

  下面这个脚本不会有任何输出,因为echo语句引用了一个局部版本的变量 $a,而且在这个范围内,它并没有被赋值

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

global关键字

  以下脚本的输出将是“3”。在函数中声明了全局变量a和a和b之后,对任一变量的所有引用都会指向其全局版本。对于一个函数能够声明的全局变量的最大个数,PHP没有限制

<?php$a = 1;$b = 2;function Sum()
{    global $a, $b;    $b = $a + $b;
}
Sum();echo $b;//3?>

  在全局范围内访问变量的第二个办法,是用特殊的PHP自定义$GLOBALS数组

  GLOBALS是一个关联数组,每一个变量为一个元素,键名对应变量名,值对应变量的内容。GLOBALS之所以在全局范围内存在,是因为GLOBALS是一个超全局变量

<?php$a = 1;$b = 2;function Sum()
{    $GLOBALS[‘b‘] = $GLOBALS[‘a‘] + $GLOBALS[‘b‘];
}
Sum();echo $b;//3?>

预定义变量

  对于全部脚本而言,PHP提供了大量的预定义变量。这些变量将所有的外部变量表示成内建环境变量,并且将错误信息表示成返回头

  下面是预定义变量的列表

超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量$GLOBALS — 引用全局作用域中可用的全部变量$_SERVER — 服务器和执行环境信息$_GET — HTTP GET 变量$_POST — HTTP POST 变量$_FILES — HTTP 文件上传变量$_REQUEST — HTTP Request 变量$_SESSION — Session 变量$_ENV — 环境变量$_COOKIE — HTTP Cookies$php_errormsg — 前一个错误信息$HTTP_RAW_POST_DATA — 原生POST数据$http_response_header — HTTP 响应头$argc — 传递给脚本的参数数目$argv — 传递给脚本的参数数组

  大多数的预定义变量并不是超全局变量,它们需要用‘global‘ 关键字来使它们在函数的本地区域中有效

超全局变量

  超全局变量在任何范围内都有效,它们并不需要‘global‘声明

  下面是超全局变量的列表

$GLOBALS$_SERVER$_GET$_POST$_FILES$_COOKIE$_SESSION$_REQUEST$_ENV

<?phpfunction test_global()
{    //预定义变量
    global $HTTP_POST_VARS;    echo $HTTP_POST_VARS[‘name‘];    //超全局变量
    echo $_POST[‘name‘];
}?>
时间: 2024-10-13 18:21:04

PHP之变量范围的相关文章

javaScript的2种变量范围有什么不同

1.javascript怎样选中一个checkbox,怎样设置它无效? document.all.cb1[0].disabled = true; 2.js中的3种弹出式消息提醒(警告窗口,确认窗口,信息输入窗口)的命令式什么? alert confirm prompt 3.javaScript的2种变量范围有什么不同? 全局变量:当前页面内有效 局部变量:方法内有效 4.列举javaScript的3种主要数据类型,2种复合数据类型和2种特殊数据类型. 主要数据类型:string, boolean

List的设置值,跟变量的位置关系(变量范围的变化导致结果差别很大)

我们想要的结果是: [RegnTypeCharge: null,null,null,null,1,null,null,null,null,null,null,null,null,null,null,][RegnTypeCharge: null,null,null,null,hehe,null,null,null,null,null,null,null,null,null,null,]com.[email protected]addbf1com.[email protected]42e816 需要

Python 变量范围

1.本地变量,全局变量 Python 中有2种变量作用范围本地变量,全局变量. 变量搜索路径是:本地变量->全局变量 它们简而言之就是本地变量的值只在本地作用范围有效.而全局变量的作用范围是全局的. 例如: a = 3 def px(): a = 4 print (a) print (a) px() print (a) 上段代码的结果为 3 4 3,px函数中的a只是本地变量,它只在它所在代码块中有效.不能改变外面a的值 但是加上global后,我们再来看: a = 3 def px(): gl

php--关于函数(2)变量范围

PHP的变量的范围 局部变量( local variable): 在函数中声明的变量就是局部变量,只能在自己的函数内部使用.参数就是局部变量,这个局部变量可以调用时去赋值. 全局变量(global variable): 在函数外声明,在变量声明以后的,直到整个脚本结束前都可以使用,包括在函数中和{}中都可使用,在PHP中使用全局变量 要通过global关键字 将这个全局变量包括到函数中才能使用到,在global声明之后才是使用全局的变量 静态变量(static variable):静态变量只能声

PHP基础-自定义函数-变量范围-函数参数传递

一.自定义函数    function 函数名([形式参数1,形式参数2,....形式参数n]){        //各种PHP代码....        //......        return 表达式;//也可以不返回,如果不写那么默认返回null    }        函数的调用:        函数的调用需要遵循定义函数的时候写的规则,一一对应,将具体的实际参数传给定义函数时候写的形式参数!        调用函数之后执行的过程是相对独立的,互补干扰,默认没有联系!        

sass语法基础知识

文件后缀名 sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一种就是我们这里使用的scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号.而本教程中所说的所有sass文件都指后缀名为scss的文件.在此也建议使用后缀名为scss的文件,以避免sass后缀名的严格格式要求报错. //文件后缀名为sass的语法 body background: #eee font-size:12px p background: #0982c1 //文件后缀名为scss的语法 b

关于php include变量作用域的说明

作者:zhanhailiang 日期:2015-04-17 首先,请阅读include,其中重点说明了"include所包含的代码继承了 include 所在行的变量范围": 当一个文件被包含时,其中所包含的代码继承了 include 所在行的变量范围.从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用.不过所有在包含文件中定义的函数和类都具有全局作用域. 这意味着,include里的代码可以访问到所在行处能访问到的所有相关变量. 如下,我将编写test.php tes

Coursera Machine Learning 学习笔记(十三)

VI. Logistic Regression (Week 3) - Classification 在分类问题中,我们所尝试预测的是结果是否属于某一类(例如正确或错误).分类问题的例子有:判断一封电子邮件是否是垃圾邮件:判断一封电子邮件是否是垃圾邮件:判断一次金融交易是否是欺诈等等. 我们从二元的分类问题开始讨论. 我们将因变量(dependent variable)可能属于的两个类分别称为负向类(negative class)和正向类(positive class),则因变量 - Hypoth

兰姆达表达式Lambda 表达式(C# 编程指南)

转https://msdn.microsoft.com/zh-cn/library/bb397687.aspx Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数.通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数.Lambda 表达式对于编写 LINQ 查询表达式特别有用. 若要创建 Lambda 表达式,需要在 Lambda 运算符 => 左侧指定输入参数(如果有),然后在另一侧输入表达式或语句块.例如,lambda 表达式 x => x