-
2021-03-22 19:47:47
Global是php中一个比较特殊的命令,大家直接叫他超级全局变量了,下面我来介绍我今天在使用Global定义全局学习笔记了
很不习惯PHP中的变量作用域,PHP中函数变量和全局是完全隔绝的,也就是无法相互访问。
比如下面这样:
代码如下:$test = 123;
abc(); //这里什么都不输出,因为访问不到$test变量
function abc(){
echo($test);
}$test = 123;
abc(); //这里什么都不输出,因为访问不到$test变量
function abc(){
echo($test);
}
如果,你想在函数内部访问外部变量,你需要这样:
代码如下:$test = 123;
abc(); //输出123
function abc(){
global $test;
echo($test);
}$test = 123;
abc(); //输出123
function abc(){
global $test;
echo($test);
}
但如果我们在函数中定义全局变量呢,像下面这样:
代码如下:function abc(){
global $test;
$test = 123;
}
abc();
echo($test); //输出123function abc(){
global $test;
$test = 123;
}
abc();
echo($test);
//输出123
通过这种方式,我们可以在外部访问到函数内部定义的变量
在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内(包括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 'B.php'; //将include 从局部Test_Global函数中移出
$a = 0 ;
Test_Global();
echo $a;
?>
//B.php 文件
function Test()
{
global $a;
$a =1;
}
?>
2.优秀的访问器
代码如下:
//A.php 文件<?php
include 'B.php';
$a =0;
Set_Global($a);
echo $a;
?>
//B.php 文件
function Set_Global(&$var)
{
$var=1;
}
?>
更多相关内容 -
AppDelegate中定义全局变量
2014-03-12 10:05:06在AppDelegate类中轻松定义全局变量,几乎和C语言一样来定义。 -
python中定义全局变量
2021-03-17 17:38:04python中怎么定义全局变量python中在哪些情况下必须使用global来声明全局变量python class里面的全局变量问题python中的本地变量(local variable)和全局变量(gl如题——python中直接定义的变量就是本地变量,使用...python中怎么定义全局变量
python中在哪些情况下必须使用global来声明全局变量
python class里面的全局变量问题
python中的本地变量(local variable)和全局变量(gl如题——
python中直接定义的变量就是本地变量,使用global定义的变量就是全局变量。比如: a = 1b = 1def foo1(): global b #申明使用全局b a = 2 #a是本地变量 b = 2 #b是全局变量foo1()print aprint b 如果解决了您的问题请喜欢。
Python一个模块怎样修改另一个模块定义的全局变量值?
Python类里面设置全局变量有什么用吗?有用。 局部变量在作用区域过后就没有了。然而,全局变量可以整个程序一直存在。并且局部变量只能在函数没访问,而全局变量可以直接访问。
python的class里全局变量有时不能被调用
python 怎么定义全局变量
在python中,全局变量一般有两种使用方式: 第一种:是在一个单独的模块中定义好,然后在需要使用的全局模块中将定义的全局变量模块导入。 第二种:直接在当前的模块中定义好。
-
python程序中用类变量代替global 定义全局变量
2020-12-10 12:53:10在python编程中,一般使用global 关键字来定义全局变量,但是发现 global 关键字在涉及多个文件时,好像存在问题。比如,单个文件下用global定义使用全局变量的情况 ,看下面的代码#-*-coding: utf-8 -*-#from data_...在python编程中,一般使用global 关键字来定义全局变量,但是发现 global 关键字在涉及多个文件时,好像存在问题。
比如,单个文件下用global定义使用全局变量的情况 ,看下面的代码
#-*-coding: utf-8 -*-#from data_def import *
distance=34
classtest(object):def __init__(self):pass
#在类里面改变全局变量的值
defchange_1(self):globaldistance
distance=90
print("distance in class:", distance)#输出全局变量的值
defprint_value(self):globaldistanceprint("distance in class:", distance)#在函数里面使用和打印全局变量的值
deffunction_test():globaldistanceprint("global value in function", distance)
distance=234
print("global value in function",distance)
function_test()#在函数里面使用和改变全局变量的值 34->234
t=test()
t.print_value()#在类里面打印全局变量的值 234
t.change_1() #在类里面改变全局变量的值 234->90
程序运行结果如下:全局变量运行正确
global value in function 34
global value in function 234distance in class: 234distancein class: 90
下面把上述代码拆分成两个文件,data_def.py 和 main.py ,data_def.py 定义全局变量distance 和类 ,main.py 导入data_def.py。
data_def.py文件代码如下:
#-*-coding: utf-8 -*-
distance=34
classtest(object):def __init__(self):pass
#在类里面改变全局变量的值
defchange_1(self):globaldistance
distance=90
print("distance in class:", distance)#输出全局变量的值
defprint_value(self):globaldistanceprint("distance in class:", distance)
main.py文件代码如下:
#-*-coding: utf-8 -*-
from data_def import *
#在函数里面使用和打印全局变量的值
deffunction_test():globaldistanceprint("global value in function", distance)
distance=234
print("global value in function",distance)print("gloabl value in main:",distance) #主函数里面,全局变量为34
function_test() #在函数里面使用和改变全局变量的值 34->234
t=test()
t.print_value()#在类里面打印全局变量的值 输出为 34 并非是234,函数里面改变全局变量值不影响类里面全局变量的值???
t.change_1() #在类里面改变全局变量的值 34->90
程序运行结果:
gloabl value in main: 34
global value in function 34
global value in function 234distancein class: 34distancein class: 90
两次运行的结果存在出入,可以发现,用global 在不同文件间操作全局变量时,生成的结果和我们想象的不太一样,具体原因还不明确??知道原因的欢迎留言。
为此,可以考虑用类变量来定义全局变量。实现方式看以下代码。
第一个文件(data_def.py)定义两个类,第一个类定义全局变量distance ,第二个类为普通操作类
#-*-coding: utf-8 -*-#filename:data_def.py#构造类变量作为全局变量,代替global
classglobal_value():
distance=34
classtest(object):def __init__(self):pass
#在类里面改变全局变量的值
defchange_1(self):
global_value.distance=40
print("distance in class:", global_value.distance)defchange_2(self):
global_value.tail_dis=90
print("distance in class:",global_value.distance)#输出全局变量的值
defprint_value(self):print("distance in class:", global_value.distance)
第二个文件(main.py) 导入第一个文件定义的类,并进行变量操作
#-*-coding: utf-8 -*-
from data_def import *
#在函数里面使用和打印全局变量的值
deffunction_test():print("global value in function", global_value.distance)
global_value.distance=234
print("global value in function",global_value.distance)print("global value in main:",global_value.distance) #打印出全局变量的初始值:34
t=test()
t.change_1()#在类里面改变全局变量的值:34->40
print("global value in main:",global_value.distance)
t.change_2()#在类里面改变全局变量的值:40->90
print("global value in main:",global_value.distance)
function_test()#在自定义函数里面使用和改变全局变量的值 90->234
global_value.distance=11 #在main主函数里面改变全局变量的值 234->11
t.print_value() #在类里面查看已经改变的全局变量的值 11
程序输出结果如下:
程序执行输出结果:global value in main: 34distancein class: 40
global value in main: 40distancein class: 40
global value in main: 40
global value in function 40
global value in function 234distancein class: 11
从输出结果可以看出,利用类变量的方式也可以实现全局变量的定义,并且可以跨文件操作。
-
javascript怎么定义全局变量?
2021-06-12 17:19:55javascript怎么定义全局变量?下面本篇文章给大家介绍一下javascript定义全局变量的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。javascript怎么定义全局变量?1、在js的函数外部用var...javascript怎么定义全局变量?下面本篇文章给大家介绍一下javascript定义全局变量的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
javascript怎么定义全局变量?
1、在js的函数外部用var定义一个变量var name='测试';
function XX(){
alert(name);
}
2、函数外部,不使用var,直接给定义变量,隐式的声明了全局变量name='测试';
function XX(){
alert(name);
}
这种方法,即使该变量是在一个function内,当该function被执行后它变成了全局变量 ---- 但是function不执行它就不被其他function知道,所以最好定义在function外
3、使用window.变量名定义为全局变量
但是注意:调用时候建议写上window.变量名,当然也可以不写;我们常用的document.getXXX的document对象就是window的window.name='测试';
function XX(){
alert(window.name);
}
全局变量的优点:
可以减少变量的个数,减少由于实际参数和形式参数的数据传递带来的时间消耗。
全局变量的缺点:
(1)全局变量保存在静态存贮区,程序开始运行时为其分配内存,程序结束释放该内存。与局部变量的动态分配、动态释放相比,生存期比较长,因此过多的全局变量会占用较多的内存单元。
(2)全局变量破坏了函数的封装性能。函数象一个黑匣子,一般是通过函数参数和返回值进行输入输出,函数内部实现相对独立。但函数中如果使用了全局变量,那么函数体内的语句就可以绕过函数参数和返回值进行存取,这种情况破坏了函数的独立性,使函数对全局变量产生依赖。同时,也降低了该函数的可移植性。
(3)全局变量使函数的代码可读性降低。由于多个函数都可能使用全局变量,函数执行时全局变量的值可能随时发生变化,对于程序的查错和调试都非常不利。
因此,如果不是万不得已,最好不要使用全局变量。
更多web前端知识,请查阅 HTML中文网 !!
-
C语言在头文件中定义全局变量
2021-05-20 12:57:40C语言在头文件中定义全局变量头文件定义全局变量等问题全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?可以,在不同的C文件中以static形式来声明同名全局变量。头文件中不可以直接定义变量和函数,... -
thinkphp定义全局变量
2021-03-29 08:09:10本文收集整理关于thinkphp定义全局变量的相关议题,使用内容导航快速到达。内容导航:Q1:thinkphp 视图模型中怎么用全局变量或者是点语法先说下,关联模型。如你所说,关联模型和jion类似。实际上,thinkphp的关联... -
vue3 如何定义全局变量
2021-07-31 18:26:11在vue2中,我们知道vue2.x是使用Vue.prototype.$xxxx=xxx来定义全局变量,然后通过this.$xxx来获取全局变量。 但是在vue3中,这种方法显然不行了。因为vue3中在setup里面我们是无法获取到this的,因此按照官方文档... -
vue中定义全局变量
2022-03-12 23:02:201、创建一个文件用于存储全局变量,例如网站信息、token、用户的基本信息等 使用用export default 暴露,在main.js里面使用Vue.prototype挂载到vue实例上,如此可以全局使用this访问 <script> const file_path... -
JavaScript如何定义全局变量
2021-06-12 15:51:50JavaScript中定义全局变量主要分为显式声明或者隐式声明。下面本篇文章就来给大家具体介绍一下,希望对大家有所帮助。方法1:显式声明使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则... -
python 定义全局变量
2020-10-07 20:52:22python定义全局变量 全局变量可以在代码任意位置创建,能够被所有对象和函数引用,有利于变量的共享。 全局变量的定义: global+变量名 声明后引用: OLD_URL='http://oldboyedu.com' def bb(): global OLD_... -
JavaScript在函数中定义全局变量
2021-12-06 16:09:48因为在函数中 var a ,a是一个局部变量,而b,c是全局变量。 var a=b=c=9 相当于 var a=9;b=9;c=9; 此时,a是局部变量,b、c 没有var声明,当全局变量看!!! 如果是 var a=9,b=9,c=9; 那么是集体声明,此时a、... -
头文件中定义全局变量
2020-08-14 21:11:05这些天写的程序中用到了全局变量,一开始是在一个文件下做测试后来把文件按逻辑拆分了一下,不同的代码被放在了几个文件中,最后用Makefile来编译就遇到了今天的话题,怎么在头文件中定义全局变量呢? 做法 要想一个... -
simulink定义全局变量
2021-04-22 12:34:02函数文件的变量是局部变量 , 运行期间有效 , 运行完毕就自动被清除 , 而命令 文件的变量是全局变量 , 执行完毕后仍被保存在内存中 (3) 、M 函数文件要定义......(4)命名变量时可以取一个容易... -
在Python中的函数中是否可以定义全局变量
2020-11-20 22:01:52def function(arguments): global var_name var_name = value #must declare global prior to assigning value 这将在任何...dict[i] 这将允许您在另一个函数或程序中使用该变量,而无需使用全局变量或内置的return。 -
vue定义全局变量
2018-11-02 15:01:00比如,登录成功后可能需要将用户名,id等信息存起来,便于其他页面展示或使用,将这些信息定义为全局变量是用起来就很方便。 举栗子: 在login.vue中拿到了用户的一些信息: &lt;script&gt; import... -
uniapp定义全局变量方法
2020-10-22 11:05:54当我们开发uniapp的时候,会想到全局变量,全端存储到全局中,调用起来非常方便 main.js代码 import Vue from 'vue' import App from './App' Vue.config.productionTip = false Vue.prototype.globalData = { ... -
如何在C#窗体中定义全局变量
2020-07-05 16:37:15这个全局变bai量有两种: 一种是适用于当前窗体,即du只在zhi当前窗体中使用,...另一种是定义多个界面的的变量,一般会新建一个类,如CommonData.cs之类的,然后在里面写全局变量,变量形式如: 调用方法如下 ... -
在vue项目中 实现定义全局变量 全局函数操作
2020-12-22 11:19:44写在前面:如题,在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从...定义全局变量原理:设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用export default 暴露出去,在main.j... -
在JavaScript函数中定义全局变量
2020-01-21 09:58:39是否可以在JavaScript函数中定义全局变量? 我想在其他函数中使用trailimage变量(在makeObj函数中声明)。 <html xmlns="http://www.w3 -
Qt中定义全局变量方法
2020-04-10 16:53:30在使用qt编程时我们经常会使用到全局变量,那么全局变量该如何去定义和初始化呢 有两种方式 第一种使用extern 关键字 //global.h extern int a; //global.cpp static int a = 1; //myfile.cpp #include... -
Django定义全局变量
2019-08-08 15:23:00定义全局变量,在项目的任何位置都可以获取到变量的值 在include App=》include文件夹下=》context_processors.py 里定义需要获取的变量 #!/usr/bin/env python # coding:utf-8 # Author:Fengchunyang """ ... -
controller中定义全局变量
2019-06-27 15:15:43添加注解@PostConstruct,初始化加载init方法,如下 private String pic_url; private String file_path; //@PostConstruct当bean加载完之后,就会执行init方法 @PostConstruct public void init(){ ... -
python类怎么定义全局变量
2020-11-20 19:40:03和C语言一样,Python也具有全局变量,其定义全局变量的用法有两种:声明法(推荐学习:Python视频教程)该方法是直接在当前模块中进行全局变量定义声明,使用global的声明方式,再进行引用!OL... -
vue项目中定义全局变量
2019-04-25 10:19:40前言:项目中经常用到用户登录后的token、用户名、用户...首先定义全局变量模块文件: Modular.vue const userName='xiaoming; const token='12345678'; export default { userName,//用户名字 token,//用户... -
c# 如何定义全局变量?
2020-05-07 21:48:57C#中没有全局变量的概念,可以定义一个common类,通过静态百变量来存放所有需要的全局变量,调用的时候通过common来调用即可。 调用的时候使用“命名空间度.common.属性名”即可,例如 string m_name = common.... -
C语言在头文件定义全局变量的技巧
2020-05-01 12:48:42在刚开始学习C语言的时候,可能很多人都听过前辈说要少用goto,少用do{}while(),不要在头文件定义全局变量等,但实际上每个特性都有其合适的应用场合,只要正确的使用是不会有问题的,相反还可能给代码带来好处。 -
Vue 定义全局变量
2019-06-18 13:43:00设置并引入全局变量文件 创建一个 Store.vue 文件并暴露出去, 用来保存全局变量 <script> const name = 'shenxianhui'; const age = 24; export default { name, age }; </script> 在 Test.vue ... -
在vue项目中 如何定义全局变量 全局函数
2020-10-10 15:51:25这里写自定义目录标题设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用export default 暴露出去,需要时导入即可一、变量二、方法 设置一个专用的的全局变量模块文件,模块里面定义一些变量初始... -
stylus定义全局变量
2020-02-20 13:17:22很多项目都会有一个主题色,这个色值在很多地方都会使用到,或者一些在很多地方都会用到的共同的东西,这种情况下最好的办法就是定义一个全局变量,方便使用。...创建一个用来定义全局变量的文件 var...