$p = "PII";不是赋值语句吗?为什么define($p,3.14);必须要有这句才能通过?
$p 是变量, $p='pii',就是说 把字符串pii赋值给$p. 而定义常量的define(1,2)中必要的两个参数, 1的数据类型是string. 2的类型任意. 当define($p,3.14)时,由于$p是变量 而不是string类型.这是 就把3.14放在了$p中储存的string类型的pii中. 而不是储存在$p中. 而$p 一直指向字符串pii.
但是我想问为什么echo $p输出的是PII,而不是3.14。
"变量是指在程序执行过程中数值可以变化的量。
变量通过一个名字(变量名)来标识。
系统为程序中的每一个变量分配一个储存单元,变量名实质上就是计算机内存单元的命名。
因此,借助变量名即可访问内存中的数据。"
$p = "PII";具体的数据值"PII"直接赋值给了变量p,所以,变量p在内存中的数据就是"PII"。
define($p,3.14);
就相当于define("PII",3.14);
所以最后"echo PII;"就和前面的"echo PI;"一样,输出常量名为"PII"的值。
这是我的理解,希望可以帮到你。
$p = "PII" ; 这条不能理解为变量p 的值是一个字符串“PII”???
那以后$ 变量 ,赋值怎么区分??
是赋值语句,将常量名PLL赋值给变量P,之后$p中储存的是常量名
是赋值语句,$p是变量,把PII赋值给$p变为常量,因为define()是用来定义常量的
$p = "PII";不是赋值语句吗?
是的,就是把$P,赋值给常量 “PII”
但是$P,常量与“PI”常量并不是一个内存地址,虽然他们的数值都是一样的3.14,但他们是两个常量
是赋值语句先把PII的值赋给了$p,$p = "PII"把$p和$PII 指向同一个内存的存储值,define是对常量的定义,又把$p定义成了一个常量,对$p定义了3.14,输出$PII其实就是输出了$p的值