章节
问答
课签
笔记
评论
占位
占位

PHP-如何判定常量是否被定义

如果常量被重复定义以后,PHP解析器会发出“Constant XXX already defined”的警告,提醒我们该常量已经被定义过。那么,在团队开发,或代码量很大的情况下,我们如何去判定一个常量是否被定义呢?

defined()函数可以帮助我们判断一个常量是否已经定义,其语法格式为:

bool defined(string constants_name)

它只有参数constant_name,指的是要获取常量的名称,若存在则返回布尔类型true,否则返回布尔类型false; (注:bool表示函数返回值类型为布尔类型)

任务

在右边编辑器中,输入两条指令:

1、在第4行输入第一行指令:

$is1 = defined($p);

2、在第5行输入第二条指令:

$is2 = defined("PI2");

如图所示:

我们可以看到返回的值为布尔类型,如图所示:

?不会了怎么办
  1. 检查一下函数名“define”有没有写错哦;
  2. "PI2"有没有漏掉双引号;
||
1
2
<?php
define("PI1",3
    .14);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最新回答 / 月初影
我猜你应该是把“$is2 = defined("PI2");”写成了“$is2 = defined("PI1");”PI1是定义的了,然鹅PI2并没有

已采纳回答 / qq_Eye_4
因为他是输出字符串类型的   要把bool类型转换为字符串类型

最新回答 / 慕粉2561103
echo $p; 这会输出时,相当于输出变量名为P的变量,p变量的值是"PI1"。var_dump($is1);相当于下边var_dump(defined($p));也就是var_dump(defined(PI1));判断这个是不是true上边说的echo $p; 输出后变成字符串了,这里并没有改变什么。没有改变数据类型内容啥的,echo只是单纯的输出。你可能理解为echo输出后$p就不再是$p了,就是PI1了,$p这个变量用完就销毁了或者说改变了。这是整体用的变量,只要不是被重新赋值$p=abc,他的性...

最赞回答 / 慕粉5434279
constant("PI1")是获取PI1的值3.14,defined(constant("PI1"))等于defined(3.14)

已采纳回答 / 爱学习的阿硕
defined();方法是判断这个常量是否被定义,很显然课程中的PI2常量名未被定义值,所以返回false,PI1是被define();方法定义了值为3.14,然后又将PI1赋给$p,所以defined()方法返回后是true

最赞回答 / 初学前端
$p仍是变量,可以判断它已被定义的原因是它的赋值是一个常量,defined()函数判断的是它的值,它的值已被定义所以就返回bool(true).如果说我给$p随便赋一个值,再来判断它是否已被定义,那么它永远只会反馈说这个还没被赋值,因为这个函数判断过程中没找到这个常量$p,如同课程里面的PI2一样.

已采纳回答 / 地下室的喷火龙
换成$var_damp在输出变量值的同时还会输出变量类型,echo只能输出变量值,所以不能直接替换

最赞回答 / 慕先生7123693
define方法是定义一个常量的方法,返回的是该已定义的常量;defined方法是判断一个常量是否定义,返回的是一个bool值(true/false)。

最赞回答 / 何遇2017
长量应该用双引号标出来。要不然就报错啦

最新回答 / qq_柠檬香草_6
echo 1 var_dump false

已采纳回答 / 韩奔跑
PI2一般是常量,用define()函数定义

已采纳回答 / Heineken123
上面讲的很清楚,这里$is1是用来存储判断常量是否被定义的bool型的变量;你说的,defined("P12")这不是输出语句啊,执行程序执行不了输出的啊,就是说它看不懂。

已采纳回答 / 慕粉1465057122
defined()函数可以帮助我们判断一个常量是否已经定义bool defined(string constants_name)它只有参数constant_name指的是要获取常量的名称若存在则返回布尔类型true否则返回布尔类型false;第二句已经定义了常量PI=3.14;通过  $p="PI1",$is1=defined($p);的目的就是间接来表明$is1=defined(PI1);即PI1已经被定义了。因为constant_name是参数直接用常量也是可以的。
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言