一 什么是常量

常量是一个简单值的标识符,该值在脚本中不能改变。

一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符),常量在整个脚本中都可以直接使用。

使用常量时,不能在常量名前添加$ 符号,不然会将常量转换成新的未定义变量使用,会导致报错

PHP中(PHP 4及以后)我们可以使用函数define()来定义常量

define ( string $name , mixed $value [, bool $case_insensitive = false ] )
注意:该函数有三个参数
name:必选参数,常量名称,即标志符
value:必选参数,常量的值
case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的

下面我们来举个栗子:

<?php define('NAME',"PHP是世界上最好的语言");  //定义一个名为PI的常量,区分大小写 echo NAME;           //输出:PHP是世界上最好的语言
?>
如果代码写成 define('NAME',"PHP是世界上最好的语言",true)则表示不区分大小写

PHP 5.3.0之后,除了使用函数define()之外,我们还可以使用PHP关键字const来定义常量

<?php                           //以下代码需在PHP 5.3.0及之后的版本中运行 const PI = 3.14159;  //使用const关键字定义一个名为PI的常量 echo PI;            //输出:3.14159
?>
define()是函数const是语言结构所以在执行时const要快得多

虽然上述两种方式均可以定义常量,但是它们之间有什么不同之处呢。下面我们来一一讲解PHP中define()函数和const关键字定义常量的区别

一 版本差异

两种定义常量的方式之间存在版本差异,函数define()在PHP4和PHP5中均可使用,关键字const只能在PHP 5.3.0及其后的版本中使用。

二 定义位置的区别

由于函数define()定义的常量是在执行define()函数时定义的,因此可以在函数内、循环内、if语句内等函数能够被调用的任何地方使用define()函数定义常量

与define()不同的是,由于const关键字定义的常量是在编译时定义的,因此const关键字定义常量必须处于最顶端的作用区域。这也就意味着不能在函数内、循环内以及if语句之内用const来定义常量。

<?php
//使用const关键字定义常量必须处于最顶端的作用区域
//也就是可以在编译时直接解析定义的地方const DEMO = 'DEMO';class Person{const MAN = '男';const WOMAN = '女';}interface USB{const VERSION_2 = '2.0';const VERSION_3 = '3.0';}
?>

三 对值的表达式支持的差异

虽然关键字const和define()定义的常量值都只能为null或标量数据(boolean,integer,float和string类型)以及resource类型(不推荐定义resource类型的常量,否则可能出现无法预知的结果)。不过,由于关键字const定义常量是在编译时定义的,因此const关键字定义的常量值的表达式中不支持算术运算符、位运算符、比较运算符等多种运算符,而这些运算符在define()函数定义常量时都是可以直接使用的

<?php
define('DEFINE_VAR1', 1 << 1);
//const CONST_VAR1 = (1 << 1); //const不支持位运算符,PHP会报语法错误define('DEFINE_VAR2', 1 + 1);
//const CONST_VAR2 = 1 + 1 ; //const不支持算术运算符,PHP会报语法错误define('DEFINE_VAR3', 1 == 1);
//const CONST_VAR3 = 1 == 1 ; //const不支持比较运算符,PHP会报语法错误$value = 3;
define('DEFINE_VAR4', $value);
//const CONST_VAR4 = $value ; //const不支持变量形式的值,PHP会报语法错误define('DEFINE_VAR5', true || false);
//const CONST_VAR5 = true || false ; //const不支持逻辑运算符,PHP会报语法错误define('DEFINE_VAR6', 'Hello'.' World!');
//const CONST_VAR6 = 'Hello'.' World!' ; //const不支持字符串运算符,PHP会报语法错误class User{}
$user = new User();define('DEFINE_VAR7', $user instanceof User);
//const CONST_VAR7 = $user instanceof User ; //const不支持类型运算符,PHP会报语法错误
?>

四 对字符大小写敏感的支持差异

函数define()可以接收第3个参数,如果该参数为true,则表示常量名的大小写不敏感。而使用const关键字定义常量却没有提供类似的功能,默认大小写敏感

<?php
// 设置编码为UTF-8,以避免中文乱码
header('Content-Type:text/html;charset=utf-8');// define()的第3个参数为true时,表示大小写不敏感
define('SITE_NAME', 'PHP是世界上最好的语言', true);
echo SITE_NAME;             // 输出:PHP是世界上最好的语言
echo site_name;             // 输出:PHP是世界上最好的语言
echo SiTe_NamE;             // 输出:PHP是世界上最好的语言
const DOMAIN_NAME = 'PHP是世界上最好的语言';
echo DOMAIN_NAME;           // 输出:PHP是世界上最好的语言
echo domain_name;           // PHP提示常量未定义
echo DomaIN_nAMe;           // PHP提示常量未定义
?>

下一期:PHP字符串

php round函数输出不对_PHP常量相关推荐

  1. php round函数输出不对_Python 四舍五入函数 Round

    小数位的四舍五入在项目中经常用到. 你可能有注意到 round 函数不能真正做到四舍五入. round() 函数作用就是,返回浮点数x的四舍五入值. round( x [, n] ) 简单来说就是在浮 ...

  2. php 年月日 中文,php Date()函数输出中文年月日时分秒_PHP教程

    今天我以一个简单的利用date()函数输出中文年月日时分秒引出关于大多数据用户在使用php date()函数的一些问题与date()函数一些参数详解. 当然了,PHP的DATE函数是不可能直接输出中文 ...

  3. python round函数_python中round函数如何使用

    round函数很简单,对浮点数进行近似取值,保留几位小数.比如 >>> round(10.0/3, 2) 3.33 >>> round(20/7) 3 第一个参数是 ...

  4. python round_Python round() 函数

    round() 方法返回浮点数x的四舍五入值. 以下是 round() 方法的语法: round( x [, n] ) x为浮点数,n为保留的小数点位. 以下展示了使用 round() 方法的实例: ...

  5. java的round函数加点差_【JAVA】Math.Round()函数常见问题“四舍5入”

    java.lang.Math.Round()使用时候,处理方式整理,方便以后查找   /**  * 测试函数 2014-01-10  */ public class TestMath {     pu ...

  6. php得round,PHP中的round()函数

    该round()函数舍入一个浮点数.例如0.90到1.0.35到0等. 语法round(val, precision, mode) 参数val-要取整的值 precision-它设置精度,即要舍入到的 ...

  7. python round函数_Python round() 函数

    这个一直都想写,但是因为这个点比较小,所以一直懒得动手.不过还是补上吧,留着早晚是个祸害. round函数很简单,对浮点数进行近似取值,保留几位小数.比如 >>> round(10. ...

  8. Python 中关于 round 函数的小坑

    这个一直都想写,但是因为这个点比较小,所以一直懒得动手.不过还是补上吧,留着早晚是个祸害. round函数很简单,对浮点数进行近似取值,保留几位小数.比如: >>> round(10 ...

  9. php中round函数能给整数用吗,PHP四舍五入、取整、round函数使用

    这篇文章主要介绍了PHP四舍五入.取整.round函数使用示例,需要的朋友可以参考下 小数例子: PHP保留两位小数并且四舍五入 代码如下:$n=0.1265489; echo sprintf(&qu ...

最新文章

  1. 中国AI论文普遍水?机器学习教父Tom Mitchell的回答是……
  2. datetime类型需要指定长度吗_你真的用对数据库了吗?
  3. [转]线程安全java
  4. java中Arrays.sort()实现原理
  5. java中的集合_Java中集合中的基本概念
  6. [译] APT分析报告:10.Lazarus以ThreatNeedle家族攻击工业事件还原(BMP图片隐藏RAT)
  7. python selenium下载,在python中通过Selenium Webdriver下载文件
  8. linux限制组访问权限,linux用户和组管理以及文件权限访问控制ACL策略
  9. (译)如何优化cocos2d程序的内存使用和程序大小:第一部分
  10. Spark Streaming实现WordCount
  11. mybatis plug 只查id_MyBatis Generator的一个问题引发对插件的修改
  12. 52.网络参数管理者: DHCP
  13. 高中计算机课程事例,[案例教学法在高中信息技术教学中的应用] 教学案例分析100例...
  14. sqlserver用sql语句备份数据库
  15. mySQL首行缩进快捷键_word段首如何缩进两个字符
  16. WIN7远程桌面连接--“发生身份验证错误。要求的函数不受支持”
  17. 田野调查手记·浮山摩崖石刻(二)
  18. 主机开启后,显示器显示NO SIGNAL,无信号
  19. 图书管理系统 jsp + servlet + mysql (2023)
  20. storm显微镜成像原理_超分辨率显微镜技术原理概述

热门文章

  1. python爬斗鱼直播_Python爬取2000万直播数据——看20万游戏主播能否月入100万
  2. java画虚线_java cansvas 画虚线要怎么设置?
  3. ubuntu16.04配置py-faster-rcnn
  4. 修改记录功能--jsp,servlet
  5. The Suspects//并查集
  6. 【原】概率论——第一章第1节
  7. GoogleAppEngine是什么?
  8. Centos7.2安装zabbix3.0.1简要
  9. C# WinForm开发系列 - TextBox
  10. 在android开发中使用multdex的方法-IT蓝豹为你整理