初学者 不知道想法对不对,请帮忙看一下.

来源:4-5 PHP-如何判定常量是否被定义

慕粉3554844

2016-07-12 10:46

初学者  不知道想法对不对,请帮忙看一下.

<?php 

define("PI1",3.14);

$p = "PI1";

$p1 = PI1;

$is1=defined($p);

$is2=defined("PI2");

$is3=defined($p1);

var_dump($is1);  //bool(true)

var_dump($is2);  //bool(false)

var_dump($is3);  //bool(false)

var_dump($p);    //string(3) "PI1"

var_dump($p1);   //float(3.14)

echo $p."<br/>"; //PI1

echo $p1."<br/>";//3.14

echo PI1."<br/>";//3.14

echo "PI1"."<br/>";//PI1

echo $is1."<br/>"; //1

?>

写了这一段,因为发现例子中 并没有将$p赋值自定义常量 PI1=3.14,只是赋值了一个字符串PI1

而上面代码中$p1才被赋值自定义常量 PI1=3.14,但是defined 却显示false

例子里面define的操作 不仅没有用 反而会让人误会


写回答 关注

3回答

  • Agg_bb
    2016-07-12 11:11:09
    已采纳

    $p = "PI1";      $is1=defined($p);     var_dump($is1);  //bool(true)          var_dump($p);    //string(3) "PI1"

    $p相当于赋值字符串,不是定义常量

    define("PI1",3.14);

    $p1 = PI1;       $is3=defined($p1);    var_dump($is3);  //bool(false)          var_dump($p1);   //float(3.14)

    $p1通过接受已定义常量PI1的值3.14,但是没接受定义常量的过程,所以$p1还是个变量

    慕粉3554...

    constant($p)=3.14返回字符串对应常数值吗

    2016-07-12 12:11:11

    共 1 条回复 >

  • 慕粉3641916
    2016-07-12 11:00:43

    在设定以后,常量的值无法更改

    常量名不需要开头的美元符号 ($)

    作用域不影响对常量的访问

    常量值只能是字符串或数字

    http://www.w3school.com.cn/php/func_misc_define.asp


  • qq_关蛮蛮_0
    2016-07-12 10:59:11

    在设定以后,常量的值无法更改

    常量名不需要开头的美元符号 ($)

    作用域不影响对常量的访问

    常量值只能是字符串或数字

    http://www.w3school.com.cn/php/func_misc_define.asp

    慕粉3554...

    在例子中echo $p的话 得到是字符串PI1 并不是我们之前定义的常量PI1=3.14 上面这一点对不对? 例子中就算没有定义define("PI1",3.14);这一步结果也是不变的, 因为下面根本没有用到这一条件 这个对不对? 被弄迷糊了

    2016-07-12 11:05:04

    共 1 条回复 >

PHP入门篇

PHP入门教程轻松学习,行业大牛帮您快速掌握PHP编程基础知识。

455588 学习 · 6303 问题

查看课程

相似问题