问答详情
源自:4-5 PHP-如何判定常量是否被定义

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

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

<?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的操作 不仅没有用 反而会让人误会


提问者:慕粉3554844 2016-07-12 10:46

个回答

  • 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还是个变量

  • 慕粉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