自学PHP笔记(四) PHP变量和常量
PHP中变量有普通变量、可变变量和预定义变量,而常量就是普通变量和预定义变量。
1. 变量
在PHP中变量是内存中得一个命名单元,在系统中为程序中每个变量都分配一个存储单元,在这些存储单元中可以存储任何数据类型得数据。
在PHP中不需要先声明变量后使用变量,只需要给变量赋值即可,但是PHP变量名称必须使用$字符做为前缀,变量名区分大写小写。
【示例】为变量赋值
<?php
$num = 3.1415926212;
?>
在进行赋值时只需要使用运算符=即可,在运算符等号左侧为变量名称右侧为变量值。
1.1 变量之间互相赋值
【示例】
<?php
$num1 = 123;
$num2 = $num1;
echo $num2;
?>
输出结果为:123,在变量之间进行赋值时,只进行传递变量值,变量在存储单元中都是各自独立的,也就是说当输出$num1变量时也是可以输出的,不会输出空
1.2 引用赋值
引用赋值的意思就是将变量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; #输出结果为空
?>
2. 可变变量
可变变量也就是一个可以动态变化的变量名,是一种特殊的变量,这个变量名是由应一个变量的值来进行定义的,也就是变量的名字取决于另一个变量的值。
【示例】
<?php
$a = 'test';
$test = 'hello word !';
echo $$a;
?>
输出结果为:hello word !
定义这样的变量只需要在变量前面加上$符号即可
【高级用法】
<?php
$a = 'hello';
$$a = 'word';
echo $a.$$a;
echo '<br>';
echo $hello;
?>
输出结果为:
helloword
word
3. 预定义变量
在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);
?>
输出结果如图所示:

这里因为我的环境有中文字符所以输出结果时会出现乱码,后续大家可以定义一下字符编码就不会存在乱码了。
4. 常量
4.1 声明常量
常量其实就是字面意思,也就是说这个变量是一成不变的,除非取消这个定义。
在定义常量时遵循PHP变量的相同命名规则,由英文字母、下划线和数字组成,但数字不能作为首字母出现。
4.1.1 使用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 "声明变量失败";
}
?>
输出结果为:声明变量成功
【常量与变量对比】
- 常量不需要使用
$符号进行定义 - 常量只能使用函数进行定义,不能使用赋值符
=进行赋值 - 常量不需要考虑作用域,可以在任意地方进行定义和使用
- 常量一旦被定义就无法进行修改,只能进行取消定义
- 常量的值只能是标量
4.1.2 const关键字
使用过const关键字定义常量只能用在最顶端的作用域,此方法是在编译时定义的,不能用在函数内、循环内或者判断语句内进行使用。
【示例】
<?php
const test = "hello word";
?>
是用const关键字定义常量是比较简单的,只需要在定义赋值前加上关键字即可
4.2 使用常量
获取变量值也是比较简单的可以采用变量名的方式获取或者是使用constant()函数进行获取,这两种方式输出的值是一样的,只不过使用函数获取动态常量时更方便。
【示例】
<?php
define("hello","word");
echo hello;
echo constant("hello");
?>
输出结果为:两个word
**注意:**使用函数输出常量值时,输出正确可正常输出,但是输出错误会出现报错
4.3 预定义常量
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笔记(四) PHP变量和常量的更多相关文章
- Python 极简教程(四)变量与常量
变量和常量 在 Python 中没有 常量 与 变量 之分.只有约定成俗的做法: 全大写字母的名称即为 常量: PI = 3.1415926 全小写字母的名称为 变量: name = 'nemo' 变 ...
- java学习笔记----数据类型,变量,常量
一.数据类型 1.基本类型(8种,又称内置数据类型).6种数字类型(byte,short,int,long,float,double),一种字符型(char),一种布尔类型(boolean). byt ...
- iOS开发Swift篇—(二)变量和常量
iOS开发Swift篇—(二)变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3.9倍 ...
- 李洪强iOS开发Swift篇—02_变量和常量
李洪强iOS开发Swift篇—02_变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3. ...
- Golang Go Go Go part2:变量及常量声明
三.关键字及内置预声明常量.类型.函数 1.关键字 Go有25个关键字,只能用在语法允许的地方,不能作为名称使用,它们是: break default func ...
- C# 一、语法结构、注释、命名空间、Main入口点、变量与常量、运算符、流程控制(循环)
一.代码结构 1)一个 C# 程序主要包括以下部分: 命名空间声明(Namespace declaration) 一个 class Class 方法 Class 属性 一个 Main 方法 语句(St ...
- Java学习笔记三:Java的变量、常量、变量的类型及使用规则
Java的变量.常量.变量的类型及使用规则 每一种语言都有一些具有特殊用途的词,Java也不例外,它们被称为关键字.关键字对 Java 的编译器有着特殊的意义. 一:Java中的关键字: 注:Java ...
- VBA 学习笔记 - 变量与常量
学习资料:https://www.yiibai.com/vba/vba_variables.html 变量和常量命名规则 必须以字母开头 不能包含空格.句点(.).感叹号(!)或字符@,&,$ ...
- 🤩全套Java教程_Java基础入门教程,零基础小白自学Java必备教程👻002 # 第二单元 常量,变量,数据类型 #
一.本单元知识点概述 二.本单元目标 (Ⅰ)重点知识目标 1.定义出各种数据类型的变量2.理解自动类型提升3.理解强制类型转换 (Ⅱ)能力目标 1.能够定义出所有类型的常量 2.理解Java中的基本数 ...
- Swift学习笔记--变量与常量
1.Swift是一门强类型语言,不能为变量赋予其自身数据类型之外的值: 2.声明变量使用var关键字,声明常量使用let关键字: 3.声明变量或常量时没有对其指定类型且赋予了初值,则编译器会自动推断常 ...
随机推荐
- 【转载】 在Ubuntu环境下,搜狗输入法乱码问题的解决
原文作者:高坦的博客 | Tan's Blog 原文链接:https://www.cnblogs.com/gtscool/p/12234104.html本文采用 BY-NC-SA 许可协议.转载请注明 ...
- 【转载】【重磅】Gym发布 8 年后,迎来第一个完整环境文档,强化学习入门更加简单化!
2022年11月22日 更新 gym官方地址: https://www.gymlibrary.dev/ ========================================= 原文地址: ...
- 【问题解决】git status中文文件名乱码
问题复现 解决办法 在git bash中直接执行如下命令 git config --global core.quotepath false 原因 通过 git config --help 可以查看到以 ...
- bazel简介(二)——从makefile向bazel转变(使用genrule)
0x01 背景 上篇中已经介绍了bazel的基本工作原理和相关的概念.这篇将继续介绍下,现有的makefile构建工程如何切换到bazel构建系统. bazel提供了丰富的扩展方式,当然也支持从目前的 ...
- 22.11.13 CCPC 广州站 记录
上来看A(树上DP),直观认为可做,前后拉着队友研究了两个小时,经过lcx,lgy两次hack正确性,最终基本得到答案思路,因为过于复杂和担心正确性问题不敢写. 反思:1.正式比赛中不应该一开始就将大 ...
- TrueType 和 OpenType 的关系
OpenType 和 TrueType 都是字体文件格式,它们用于在数字设备中存储和渲染文本.虽然这两种格式都广泛使用,但它们在设计和功能上有一些重要区别. TrueType 是由苹果公司和微软公司在 ...
- Android Camera2Video整合到自己项目里
背景: Android项目里调用摄像头拍摄视频,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后来因项目需要,改成了camera2 1.Camera2Video 官方d ...
- Dev-C++ 安装教程
下载地址:https://sourceforge.net/projects/orwelldevcpp/ 下载完成,在指定的下载位置有一个安装包: 双击开始安装程序 安装是默认英文安装即可,在启动后可以 ...
- 钉钉H5微应用本地开发调试记录
准备工具: 手机(ios,安卓) 安卓手机可以用网易Mumu模拟器,下载一个移动版钉钉 钉钉开放文档 本地开发的话,可以去钉钉后台管理系统,将你的本地ip地址配置成应用的首页,比如 10.xx.xx. ...
- 全面升级,票据识别新纪元:合合信息TextIn多票识别2.0
票据识别 - 自动化业务的守门员 发票.票据识别,是OCR技术和RPA.CMS系统结合的一个典型场景,从覆盖率.覆盖面的角度来说,应该也是结合得最成功的场景之一. 旧瓶装新酒,已经成熟的产品何苦费 ...