本文转发来自:https://blog.csdn.net/KH_FC/article/details/115568310
PHP中变量有普通变量、可变变量和预定义变量,而常量就是普通变量和预定义变量。
在PHP中变量是内存中得一个命名单元,在系统中为程序中每个变量都分配一个存储单元,在这些存储单元中可以存储任何数据类型得数据。
在PHP中不需要先声明变量后使用变量,只需要给变量赋值即可,但是PHP变量名称必须使用$
字符做为前缀,变量名区分大写小写。
【示例】为变量赋值
<?php $num = 3.1415926212; ?>
在进行赋值时只需要使用运算符=
即可,在运算符等号左侧为变量名称右侧为变量值。
【示例】
<?php $num1 = 123; $num2 = $num1; echo $num2; ?>
输出结果为:123
,在变量之间进行赋值时,只进行传递变量值,变量在存储单元中都是各自独立的,也就是说当输出$num1
变量时也是可以输出的,不会输出空
引用赋值的意思就是将变量A与变量B做一个链接,当变量A值发生改变,变量B的值也随之进行改变。
【示例】
<?php $a = 'test'; $b = &$a; $a = 'test1'; echo $b; ?>
输出结果为:test1
引用方法也比较简单,就是在进行赋值变量前面加上&
符号即可。
取消引用
如果不想让变量引用赋值了,我们可以使用unset()
函数取消变量引用,这个函数是将变量A和变量B之间的引用关系断开,并不是将变量进行销毁。
【示例】
<?php $a = 'test'; $b = &$a; echo $b; #输出结果为1 unset($b); echo $b; #输出结果为空 ?>
可变变量也就是一个可以动态变化的变量名,是一种特殊的变量,这个变量名是由应一个变量的值来进行定义的,也就是变量的名字取决于另一个变量的值。
【示例】
<?php $a = 'test'; $test = 'hello word !'; echo $$a; ?>
输出结果为:hello word !
定义这样的变量只需要在变量前面加上$
符号即可
【高级用法】
<?php $a = 'hello'; $$a = 'word'; echo $a.$$a; echo '<br>'; echo $hello; ?>
输出结果为:
helloword word
在PHP中提供了大量的预定义变量,通过这些变量可以获取用户会话、用户操作环境和本地操作系统等信息,由于大部分变量依赖于服务器的版本和设置,以及其他因素,所以一些预定义变量在PHP中以命令行形式运行时并不生效,下面我列举了一些预定义变量:
预定义变量 | 说明 |
---|---|
$GLOBALS | 调用全局作用域中的全部变量 |
$_SERVER | 显示服务器及环境信息 |
$_GET | 提交GET变量 |
$_POST | 提交POST变量 |
$_FILES | 提交文件上传变量 |
$_REQUEST | 提交Request变量 |
$_SESSION | Session变量 |
$_ENV | 环境变量 |
$_COOKIE | Cookies变量 |
$php_errormsg | 前一个错误信息 |
$HTTP_RAW_POST_DATA | 原生POST数据 |
$http_response_header | HTTP响应头 |
$argc | 传递给脚本的参数数目 |
$argv | 传递给脚本的参数数组 |
后面会搜集更多的预定义变量,后续文章会写到,后面我会把相应的文章链接放到这里
【示例】输出环境信息
<?php var_dump($_SERVER); ?>
输出结果如图所示:
这里因为我的环境有中文字符所以输出结果时会出现乱码,后续大家可以定义一下字符编码就不会存在乱码了。
常量其实就是字面意思,也就是说这个变量是一成不变的,除非取消这个定义。
在定义常量时遵循PHP变量的相同命名规则,由英文字母、下划线和数字组成,但数字不能作为首字母出现。
define()
函数声明常量【语法】使用define()
声明常量语法
define($name , $value [ $case_insensitive = true ]);
参数说明:
$name
:表示常量名称
$value
:表示常量的值
$case_insensitive
:表示设置常量是否区分大小写,值为true
则不区分大小写,为false
则区分大小写
注意:这里需要注意常量值只能是integer、float、string、boolean、NULL或array
哟
声明变量只返回布尔值,true 为声明成功,false 为声明失败。
【示例】声明常量
<?php if (define("test","hello word")){ echo "声明变量成功"; }else{ echo "声明变量失败"; } ?>
输出结果为:声明变量成功
【常量与变量对比】
$
符号进行定义=
进行赋值使用过const
关键字定义常量只能用在最顶端的作用域,此方法是在编译时定义的,不能用在函数内、循环内或者判断语句内进行使用。
【示例】
<?php const test = "hello word"; ?>
是用const
关键字定义常量是比较简单的,只需要在定义赋值前加上关键字即可
获取变量值也是比较简单的可以采用变量名的方式获取或者是使用constant()
函数进行获取,这两种方式输出的值是一样的,只不过使用函数获取动态常量时更方便。
【示例】
<?php define("hello","word"); echo hello; echo constant("hello"); ?>
输出结果为:两个word
注意:使用函数输出常量值时,输出正确可正常输出,但是输出错误会出现报错
PHP中提供了大量的预定义常量,不过大多数预定义常量都是由不同的扩展库进行定义的,只有加载了这些扩展库才能使用这些预定义常量,这里要注意有些预定义常量会根据不同的位置会有不同的改变,比如_FLNE_
的值就是依赖于他所在的位置来决定。下面总结了一些常用的预定义常量:
预定义常量 | 说明 |
---|---|
PHP_VERSION | 获取PHP版本 |
PHP_OS | 获取操作系统信息 |
PHP_API | 获取WEB与PHP的接口信息 |
PHP_INT_MAX | 获取最大整数 |
PHP_BINDIR | 获取执行路径 |
_FILE_ | 获取当前文件名 |
_LINE_ | 获取当前行数 |
DEFAULT_INCLUDE_PATH | 获取PHP默认路径 |
PEAR_INSTALL_DIR | 获取PHP安装路径 |
PEAR_EXTENSION_DIR | 获取PHP扩展路径 |
PHP_LIBDIR | 获取PHP模块扩展路径 |
_DIR_ | 获取当前文件路径 |
_FUNCTION_ | 获取函数名 |
M_PI | 获取圆周率 |
_MHTHOD_ | 获取当前成员 |
_NAMESPALE_ | 获取命名空间 |
_CLASS_ | 获取类名 |
后面我会整理PHP中的预定义常量,后面会写到其他文章里面,后续会把文章链接写到这里