为什么echo $p;和 echo PII;结果不一样?

来源:4-1 PHP-什么是常量

笑的很甜丶

2017-03-11 11:31

为什么echo $p;和 echo PII;结果不一样?@witkeysu。你解释的有问题吧,自己看半天才看懂是不是看半天也理解错了?请老师出山讲解吧。

写回答 关注

4回答

  • fulcrum_逸凡
    2017-03-11 23:36:21
    已采纳

    这个其实就是在定义常量的时候,常量名用的是预先定义的变量名,在定义的时候,变量名解析出变量值,变量值成了常量名。

  • 笑的很甜丶
    2017-03-14 17:57:52

    最佳回答

    2016-12-29

    其实这就是两种定义常量的方式,首先第一种很直观,也很好理解:define("PI",3.14),这就话就是定义常量名为PI的常量并赋值3.14。

    第二种定义常量的方式有些复杂,但是很灵活。$p = “PII”;define($p,3.14);  这两句的第一句可以理解为定义一个变量,变量的值为PII,第二句就是定义常量的语句了,这时就不能再把$p当成一个常量对待,而是把它当成一个快捷键(其实常量变量都是快捷键,你直接找他们就能找到他们指向的值),定义常量的时候,需要用到该快捷键的真实值,所以需要往上面找,该快捷键的值,也就是PII了,所以这时候的$p就是PII。

    之所以说第一种简单,第二种灵活,是有原因的,你可以考虑一下,如果我定义了很多个常量,或者我一个常量用了很多次,现在突然有个情况让你修改你的变量名,你该怎么办?如果是第一种就需要修改每一个常量名,如果是第二个定义方法的话,就只需要修改一处就好了,就是修改常量的快捷键。  

    希望能够帮到你,你能看懂我说的话,我想基本也能解决你的问题了。


  • 笑的很甜丶
    2017-03-11 11:34:42

    自己发现正确的答案。大家看下应该就懂了。

  • 笑的很甜丶
    2017-03-11 11:33:51

    整理了一下我的问题,请高手帮忙解答一下

    <?php

    $p = “PII”; 

    define($p,3.14);  

    echo $p; // 1. 这里为什么输出会是PII,define 不起作用了?

    // 2. 先定义p为字符串 PII, 后面又定义它为常量3.14,可以这样用?

    输出结果是 PII


    <?php

    define($p,3.14);  

    echo $p; // 这样写, 直接报错, 为什么?

    // 我开始的理解是 $p未声明, 但是下面的例子又可以正常显示, 这两个例子唯一的区别是 $p和 “PI”

     

    <?php

    define("PI",3.14); // 事先未对PI进行声明

    // 这里其实也有问题, PI为字符串,  不是变量 , 字符串 能定义为一个数值? 感觉很奇怪。

    echo PI;

    echo "<br />";

    能正常输出, 结果为  3.14

     

    <?php

    $p = "PII";   

    define($p,3.14);   //按道理, 执行到这一步, p的值应该是 3.14 而不是 PII了

    echo $p.”<br/>“; //这里为什么输出会是PII, $p=3.14 的作用去哪了?

    echo PII;  // PII不是应该只是一个字符串? 怎么成一个变量了

    echo "<br />";

    输出结果为:

    PII

    3.14


    2016-12-27源自:PHP入门篇 4-1175 浏览3 回答

    最佳回答

    2016-12-29

    其实这就是两种定义常量的方式,首先第一种很直观,也很好理解:define("PI",3.14),这就话就是定义常量名为PI的常量并赋值3.14。

    第二种定义常量的方式有些复杂,但是很灵活。$p = “PII”;define($p,3.14);  这两句的第一句可以理解为定义一个变量,变量的值为PII,第二句就是定义常量的语句了,这时就不能再把$p当成一个常量对待,而是把它当成一个快捷键(其实常量变量都是快捷键,你直接找他们就能找到他们指向的值),定义常量的时候,需要用到该快捷键的真实值,所以需要往上面找,该快捷键的值,也就是PII了,所以这时候的$p就是PII。

    之所以说第一种简单,第二种灵活,是有原因的,你可以考虑一下,如果我定义了很多个常量,或者我一个常量用了很多次,现在突然有个情况让你修改你的变量名,你该怎么办?如果是第一种就需要修改每一个常量名,如果是第二个定义方法的话,就只需要修改一处就好了,就是修改常量的快捷键。  

    希望能够帮到你,你能看懂我说的话,我想基本也能解决你的问题了。


    冰是很冰

    第一种没得变量,还修改什么变量名

    2017-03-19 10:53:01

    共 1 条回复 >

PHP入门篇

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

455994 学习 · 6306 问题

查看课程

相似问题