Loading... # 变量相关 **学习内容:** 1. 声明变量的格式 2. 全局作用域以及局部变量 3. 关键字 4. 值传递以及引用传递 ## 声明变量 在PHP中,声明变量使用`$`符号,并且区分大小写 <div class="tip inlineBlock share"> 变量可以是任意`字母`、`数字`以及`_`,并且不能以数字开头 </div> ```php $a = 1; $A = 5; ``` 例如:`变量a `与 `变量A`是两个不同的变量 ```php <?php $var_test = 1; $_var = 1; $VAR = a; //以上是正确的声明变量的格式 $1var = 1; //错误的 ``` <div class="tip inlineBlock share"> PHP是一种弱类型语言,会根据变量的值,自动把变量转换为正确的数据类型,但在PHP7中引入了强类型 </div> ## 全局与局部作用域 很容易理解,按照字面意思就是一个在自定义函数外,占整一块;一个在自定义函数内,直接放出例子就很容理解了。 ```php <?php $a = 15; //全局变量 function test(){ $b = 25; //局部变量 echo "<p>测试函数内变量</p>" echo "输出全局变量:$a"; echo "输出局部变量:$b"; } test();//调用封装的test函数(最终只看到25输出) echo "<p>测试函数外变量</p>"; echo "输出全局变量:$a"; echo "输出局部变量:$b"; //看到只有15输出 ``` <div class="tip inlineBlock share"> 函数内定义的变量名是局部变量,只作用于该函数内,故函数内无法输出全局变量,要在一个函数中访问一个全局变量,需要使用 global 关键字 </div> <div class="tip inlineBlock info"> PHP中,代码执行从上到下,从左到右 </div> # 作用域 1. local(局部作用域) 2. global(全局作用域) 3. static(静态作用域) 4. parameter(函数参数作用域) # local ```php <?php function test(){ $a=15; //局部变量(作用域) echo $a; //正常输出15 } echo “外部输出变量:$a”; //无法访问 echo PHP_EOL; test(); ?> ``` <div class="tip inlineBlock share"> 在函数内声明的变量,只能在函数内访问 </div> ## global 用于函数内访问全局变量,使用方法如下 ```php <?php $a = 25 $b = 15; //全局变量 function test(){ global $a; //使用global关键字引用$a $a=$a+$b; echo $a; } test();//调用封装的test函数,输出变量a,结果为40 ``` ## static 函数执行完成后,所声明的`所有变量`都会被删除,例如 ```php <?php function test(){ $a=5; echo $a; $a++;//在原来的基础上加一 } test(); test(); test(); //最后你会发现输出结果为666,并不是567 ``` 但是如果你不想要某一个`局部函数`被删除,就可以利用static关键字,例如 ```php <?php function test(){ static $a=5; echo $a; $a++;//在原来的基础上加一 } test(); test(); test(); //最后你会发现输出结果为567 ``` ## parameter 参数是通过调用代码将值传递给函数的局部变量。 参数是在参数列表中声明的,作为函数声明的一部分: ```php <?php function myTest($x) { echo $x; } myTest(5); ?> ``` # 值传递和引用传递 变量的传递方式有两种 * 值传递:将变量所保存的`值`复制一份传递给另外一个变量 * 引用传递:将变量所保存值的`内存地址`传递给另外一个变量 **值传递示例:** ```php <?php $a = 1; $b = $a; $b = 2; echo $a,$b; //输出1 2 ?> ``` **引用传递示例:** ```php <?php $a = 1; $b = &$a; //引用传递使用& $b = 2; echo $a,$b; //输出2 2 ?> ``` 反复研读两个传值的概念很好理解,值传递在于变量的值的复制移动,内存占用较大;引用传递只是将内存地址指向给另外一个变量,不会产生新的数据,所以相对省内存 Last modification:September 14, 2022 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 14 如果觉得我的文章对你有用,请随意赞赏