PHP项目中全局变量的使用是怎样的,要点有哪些
Admin 2022-08-16 群英技术资讯 1374 次浏览
本篇内容介绍了“PHP项目中全局变量的使用是怎样的,要点有哪些”的有关知识,在实际项目的操作过程或是学习过程中,不少人都会遇到这样的问题,接下来就让小编带大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、php的全局变量:php的全局变量和C++,Java的全局变量不一样
2、页面嵌套php:我在html页面中嵌套php代码的时候,php的全局变量好像和C++,Java的全局变量一样,好像是,记不清了
3、php全局变量使用:php全局变量用global定义一下就好,就在外面定义global是错的,必须在函数内声明
4、global定义全局变量:global定义全局变量的时候,不能一起赋值,像global $name = "why"的使用方式是错误的
5、global使用(函数外声明global是错的):下面实例中还是在函数里面声明global然后才能用
<?php
$name = "why";
function changeName(){
$name = "what";
}
changeName();
echo "my name is " . $name . "<br/>";
?>
执行代码的结果是:my name is why,而不是执行changeName()后显示what。分析原因,这是因为函数体changeName内$name变量被缺省设置为局部变量,$name的作用域就是在changeName内。于是,修改代码,添加全局变量如下:
<?php global $name; $name = "why"; function changeName(){ $name = "what"; }
changeName(); echo "my name is " . $name . "<br/>"; ?>
注意:不能在用global声明变量的同时给变量赋值。像global $name = "why"的使用方式是错误的。
定义全局变量后执行的结果仍然为my name is why,这个结果让我吃惊。原来,global的正确用法是:"在一个函数中引入外部的一个变量,如果该变量没有通过参数传递进来,那么就通过global引入进来。" 也就是说,当一个函数引用一个外部变量时,可以在函数内通过global来声明该变量,这样该变量就可以在函数中使用了(相当于当作参数传递进来)。那么,再次修改代码:
<?php
$name = "why";
function changeName(){
global $name;
$name = "what";
}
changeName();
echo "my name is " . $name . "<br/>";
?>
这次的运行结果是:my name is what,说明global是起传递参数的作用,而并非使变量的作用域为全局。再看下面的例子:
<?php
$name = "why";
function changeName(){
global $name;
$name = "what";
}
function changeName2(){
$name = "where";
}
changeName();
changeName2();
echo "my name is " . $name . "<br/>";
?>
执行结果为:my name is what,如果在changeName2()中添加global $name,运行结果则是:my name is where。
综上,global的作用就相当于传递参数,在函数外部声明的变量,如果在函数内想要使用,就用global来声明该变量,这样就相当于把该变量传递进来了,就可以引用该变量了。
除了使用global参数定义外,还可以使用超全局变量$GLOBAL:
<?php
$name = "why";
function changeName(){
$GLOBALS['name'] = "what";
}
changeName();
echo "my name is " . $name . "<br/>";
?>
一个例子:
<?php
$var1 = 1;
$var2 = 2;
function test1(){
$GLOBALS['var2'] = &$GLOBALS['var1'];
}
test1();
echo $var2 . "<br />";
$var3 = 1;
$var4 = 2;
function test2(){
global $var3,$var4;
$var4 = &$var3;
}
test2();
echo $var4 . "<br />";
?>
输出$var2的值为1,$var4的值为2,因为$var3的引用指向了$var4的引用地址。$var4的实际值并没有改变。官方的解释是:$GLOBALS['var']是外部的全局变量本身,global $var是外部$var的同名引用或者指针。意味着$GLOBAL在一个脚本的全部作用域中都可用,在函数或方法中无需执行global $variable; 就可以访问它们。与所有其他超全局变量不同,$GLOBALS在PHP中总是可用的。另一个例子:
<?php
$var1 = 1;
function test1(){
unset($GLOBALS['var1']);
}
test1();
echo $var1 . "<br />";
$var2 = 1;
function test2(){
global $var2;
unset($var2);
}
test2();
echo $var2;
?>
输出结果是$var1不存在,而$var2的值为1。这就证明,$var2只是别名引用,本身的值没有受到任何的改变。也就是说global $var其实就是$var = &$GLOBALS['var'],调用外部变量的一个别名而已!
参考:
PHP 全局变量 - borage - 博客园
https://www.cnblogs.com/borage/p/3645285.html
1 <?php 2 namespace app\index\controller; 3 4 use app\index\controller\Base; 5 6 class Exercise extends Base 7 { 8 public function index() 9 { 10 // return view('insert_array'); 11 $this->plzhDemo(); 12 } 13 14 /** 15 * php实现排列组合 16 * 参数:传入数组 排列组合所取的位数 vis数组 ans数据用来记录每次的结果 17 * 算法;递归(回溯) 18 * 返回值:返回排列组合结果数组 19 * @return [type] [description] 20 */ 21 private $count1=0; 22 public function plzh($arr,$n,$pos,$vis,$ans){ 23 //1、递归返回条件:位数够了就可以返回了 24 if($pos>$n-1){ 25 global $count1; 26 $count1++; 27 dump($ans); 28 }else{ 29 $len=count($arr); 30 for ($i=0; $i < $len; $i++) { 31 if($vis[$i]==0){//没取 32 $ans[$pos]=$arr[$i]; 33 $vis[$i]=1; 34 $this->plzh($arr,$n,$pos+1,$vis,$ans); 35 $vis[$i]=0; 36 } 37 } 38 } 39 //2、递归里面的算法(一位一位的来取)取一位之后,把这一位的数标记置为已经取了,然后取后面的位的时候从没有取的数里面取,所以需要标记数组 40 //2.1、 从未取的数里面依次取一位就好 41 42 } 43 public function plzhDemo(){ 44 $arr=array(1,2,3,4,5,6,7); 45 $n=5; 46 $vis=array(); 47 for ($i=0; $i <=count($arr) ; $i++) { 48 $vis[$i]=0; 49 } 50 $ans=array(); 51 $this->plzh($arr,$n,0,$vis,$ans); 52 global $count1; 53 dump($count1); 54 } 55 56 }
还是在函数里面声明了global然后用的。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
多个任务同时执行 将顺序执行的任务,转化为并行执行(任务在逻辑上可以并行执行)比如,我们要对已知的用户数据进行判断,是否需要发送邮件和短信,如果需要发送则发送。不使用多进程时,我们首先判断是否发送邮件,如果需要则发送;然后再判断是否需要发送短信,如果需要则发送。如果发送邮件耗时2s,发送短信耗时2s,那么我们完成任务大概需要4s左右的时间。
在laravel中,make方法用于从容器当中解析一个type,该type是源码当中定义的,解析后返回的结果就是type的一个实例,容器类调用make方法时,若没有已注册的key,会自动通过反射类实例化具体类。
(PHP4,PHP5)declare 结构用来设定一段代码的执行指令。declare 的语法和其它流程控制结构相似:declare(directive)statementdirective 部分允许设定 ...
先说一下exit函数的用法。 作用:输出一则消息并且终止当前脚本。 如果一段文本中包括多个以结束的脚本,则exit退出当前所在脚本。 比如一篇php文本包括一下代码,则输出为world。 <% echo"hello"; exit; ?> echo"world"; ?> 语法格式:void表示没有返回值。 voidexit([string$status]) vo
这篇文章主要介绍了Laravel框架Eloquent ORM修改数据操作,结合实例形式详细分析了laravel框架更新数据的两种常见操作技巧,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008