在PHP
中变量是用于储存信息的容器,我们命令服务器去干活的时候,往往需要产生一些数据,需要临时性存放起来,方便取用赋值方法与数学中的代数相类似
1、在PHP
中变量是用于储存信息的容器,类似于数学中的集合
2、赋值方法与数学中的代数相类似
变量是用于存储值的,我们命令服务器去干活的时候,往往需要产生一些数据,需要临时性存放起来,方便取用。
我们也可以理解为,变量就像一个购物袋,我们可以用来装苹果、榴莲(当然也可以用来装玫瑰)
需要注意的是,一般情况下一个变量只能装一个(不要太贪心)值,除非是复合变量(后面变量类型时会介绍,比如:数组,对象就是复合型的)
当我们放进去一个苹果后,再放进榴莲的时候,苹果就被替换掉,再放入香蕉,那么榴莲就被替换了
变量是用于存储信息的”容器
我们在PHP
中的变量也是如此。有几个特点:
必须要以
$
开始。后面跟着变量的名称,如变量x
必须要写成$x
变量的首字母不能以数字开始
变量的名字区分大小写(
$y
,和$Y是两个不同的变量),变量名不能包含空格变量不要用特殊符号、中文,_不算特殊符号
变量命名要有意义(别写
xxx
,aaa
,ccc
这种 变量名)变量名只能包含字母数字字符以及下划线(
A-A
,0-9
和_
),不能以数字开始,但是数字可以夹在变量名中间和结尾PHP
没有声明变量的命令,变量在你第一次赋值给它的时候就被创建了的
错误:变量以数字开始
<?php
$123 = 345
?>
错误:变量当中有特殊字符,中文
<?php
// $a*d = 345
//$中国=345
?>
错误:变量名没有意义aaa
,容易输错,也没有含义
<?php
$aaaa = 345;
?>
错误:变量严格区分大小写 $dog
和 $Dog
是PHP
学院的变量,尝试将$dog
的值改为8
.结果D
写成了大写
<?php
$dog = 5;
//重新修改$dog的值,将$dog改为8
$Dog = 8;
?>
PHP是一门弱类型语言
不必向PHP
声明该变量的数据类型,PHP
会根据变量的值,自动把变量转换为正确的数据类型
PHP变量作用域
变量的作用域是脚本中的变量可被引用,使用的部门
PHP
有四种不同的变量作用域
local
global
static
parameter
局部作用域与全局作用域
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global
关键字。
在 PHP
函数内部声明的变量是局部变量,仅能在函数内部访问
<?php
$x=5; // 全局变量
function myTest()
{
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
}
myTest();
echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>
在以上实例中 myTest()
函数定义了 $x
和 $y
变量。$x
变量在函数外声明,所以它是全局变量 , $y变量在函数内声明所以它是局部变量。
当我们调用myTest()
函数并输出两个变量的值, 函数将会输出局部变量 $y
的值,但是不能输出 $x
的值,因为 $x
变量在函数外定义,无法在函数内使用,如果要在一个函数中访问一个全局变量,需要使用 global
关键字。
然后我们在myTest()
函数外输出两个变量的值,函数将会输出全局部变量 $x
的值,但是不能输出 $y
的值,因为 $y
变量在函数中定义,属于局部变量
可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内
global 关键字
global
关键字用于函数内访问全局变量。
在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global
关键字
<?php
$x=5;
$y=10;
function myTest()
{
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y;
?>
static作用域
当一个函数完成时,它的所有变量通常都会被删除,然而,有时,你希望某个局部变量不要被删除
要做到这一点,在第一次声明变量时使用static
关键字
<?php
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest(); // 0
myTest(); // 1
myTest(); // 2
?>
每次调用该函数时,该变量将会保留着函数前一次被调用时的值,需要注意的是,该变量仍然是局部变量
如果变量$x
去掉static
,你会发现,每次都是0
,0
,0
,并不会保留上一次的值
参数作用域
参数是通过调用代码将值传递给函数的局部变量,参数是在参数列表中声明的,作为函数声明的一部分
<?php
function myTest($x)
{
echo $x;
}
myTest(5);
?>