嗯,是吧,学习是一个积累的过程,一定要戒骄戒躁,不然可是会摔跤的。原归正传,今天说说PHP基础语法中的常量和变量。
1
常量
人们常说:该是你的就是你的,任何人谁也无法改变得了的。
放在PHP中,无法改变的量就是常量。
合法的常量标示,常量名称前面不用加美元符($),以字母或者下划线开头,后面跟上任何的数字,字母或者下划线。当然,常量的名称也要取名取得见名知意。
常量大小写敏感的,通常我们都用大写来命名常量。
常量的定义
使用的函数是 define($name,$value,[$option])。
$name:代表常量的名称,记得通常是大写字母标识
$value:代表的是该常量的值
$option: 是可选参数,代表常量名称是否大小写敏感,默认是false
下面我们创建两个变量,测试一下:
//对大小写敏感
define("LEMON", "I'm Lemon");
echo LEMON ;
echo '<br/>';//换行
echo lemon;
echo '<br/>';//换行
//对大小写不敏感
define("HUANG", "I'm Lemon", true);
echo huang;
echo '<br/>';//换行
echo
运行结果,有一行一定会报错,如下:
2
预定义常量
PHP中已经定义好的一些常量,可以方便我们开发过程中来使用,这些常量我们统称为预定义常量,如下表格就是PHP中常用的预定义常量,了解一下。
常量名 | 功能 |
---|---|
__FILE__ | 获取当前所在的PHP程序文件名 |
__LINE__ | 获取当前所在的PHP程序代码行数 |
PHP_VERSION | 获取PHP的版本 |
PHP_OS | 获取执行PHP解析器的操作系统名称 |
TRUE | 真值 |
FALSE | 假值 |
NULL | 空(null)值 |
E_ERROR | 指到最近的错误处 |
E_WARNING | 指到最近的警告处 |
E_PARSE | 指解析语法有潜在问题处 |
E_NOTICR | 为发生不寻常但不一定是错误处 (就如上例代码抛出的Notice消息) |
我们用代码来实际了解一哈:
<?php
header("Content-Type:text/html;charset=utf-8");
echo "当前文件路径:".__FILE__;
echo "<br>当前行数:".__LINE__;
echo "<br>当前PHP版本信息:".PHP_VERSION;
echo "<br>当前操作系统:".PHP_OS;
?>
运行结果:
3
变量
人们又常说:天有不测风云,人有旦夕祸福,体现的是一种变数。在PHP中,把这种可以改变的量,称为变量。
合法的变量标示,变量名称前面需要加美元符($),以字母或者下划线开头,后面跟上任何的数字,字母或者下划线。当然,变量的名称也要取名取得见名知意。
变量也是大小写敏感的,通常我们都用小写来命名变量。
不同于常量,常量可以用于程序中任何的位置,而变量的使用,是有一定的作用范围,在范围内使用才是有效、有意义的。
根据作用的范围不同,变量可以声明成局部变量和全局变量。
局部变量:定义在函数内部,其作用域就是所在函数内部,超出则无法使用。
全局变量:定义在函数以外,作用域是整个PHP文件,我们自己定义的函数内部是无法使用的。如果想要在自定义的函数内部使用,需要使用 global 关键字声明变量。
<?php
$x="Lemon";
$y="Huang";
function getName(){
echo $x."<br>"; //$x不能被调用,没有输出
global $y; //利用关键字global 在函数内部说明,不说明认为是私有变量
echo $y."<br>"; //调用$y
}
getName();
?>
运行结果:
例子中我们定义两个全局变量$x与$y,在我们自定义函数getName()里面,我们在函数内使用它们,而程序输出的结果只有$y的值“Huang”,因为我们用global关键字声明了全局变量$y。而函数外定义的$x和函数内使用的$x,其实它们是没有任何关系的。
4
静态变量
静态变量,其含义是你在使用一个变量是可以保留它被使用完后的值,下一次使用时,值的改变是在上一次的值基础之上。
举个例子,假如你今天被妈妈打了一次,你心里已经默默记住被妈妈打了一次,明天又被妈妈打了一次,你心里的默默又加了一次。嗯,你的默默记住了你被打了两次,而不是又一次,默默就是你的静态变量,会保留你之前的值。
静态变量:规范定义,在函数调用完之后还保留变量的值,当再次调用函数时,又可以继续使用上回保留的值。
而在上一小节说的变量,在函数调用结束后,它存储的数据值是会被清除,变量占用的内存空间会被释放掉。
如何使用静态变量呢?使用静态变量,只需要用static关键字来声明即可。例如,static $var ,$var就是静态变量。
<?php
function add1(){
static $count=0;
$count++;
echo $count." ";
}
function add2(){
$count=0;
$count++;
echo $count." ";
}
for($i=0;$i<10;$i++) add1(); //输出1~10
echo "<br>";
for($i=0;$i<10;$i++) add2(); //输出10个1
?>
运行结果:
自定义函数add1()输出了从1到10的数字,而add2()函数输出了10个1。主要因为你函数add1()有声明静态变量。
初始化都为0,再分别使用for循环(下来竟会学到的)调用两个函数,可以发现有声明静态变量的函数add1()在被调用后,$count的是会被保留的呈现累加效果,也就是说静态变量只要声明一次,它的值就会被保留在内存空间中而不是函数调用完就被销毁,这就区别于一般的变量了,只有普通变量的函数add2()在被调用后,$count的值每循环一次初始化一次,一个循环内调用完就被销毁,所以每次输出的都只能是1。
5
可变变量
可变变量,可能一开会觉得和变量不应该是同一概念吗?但是,可变变量其实说的不是变量的变,而是变量名的变。
可变变量,表示的是一个变量的名称可以有一个变量的值来确定。代码上的表示,就是在变量的前面再多加上一个美元符($)。
<?php
$lemon="yellow";
$yellow="banner";
echo $lemon; // 输出yellow
echo "<br>";
echo $$lemon; //通过$$lemon会改变成$yellow的名称,而$yellow变量刚好存在,则输出banner
?>
运行结果: