![零基础PHP学习笔记](https://wfqqreader-1252317822.image.myqcloud.com/cover/195/36710195/b_36710195.jpg)
2.5 PHP变量
把一个值赋给一个名字,例如把值“明日科技小助手”赋给$name,$name就称为变量。在大多数编程语言中,都把这种情况称为“把值存储在变量中”。在计算机内存中的某个位置,字符串序列"明日科技小助手"已经存在。你不需要知道它们到底在哪里,只需要告诉PHP这个字符串序列的名字是$name,从现在开始就要通过这个名字来引用这个字符串序列。这个过程就像快递存放处一样,内存就像一个巨大的货物架,在PHP中使用变量就像给快递贴标签,如图2.3所示。
顾客的快递存放在货物架上,上面贴着写有编号的标签。当顾客来取快递时,并不需要知道它们存放在这个大型货架的具体位置,只需要提供编号,快递员就会把快递交送到顾客手上。实际上,顾客的快递可能并不在原先所放的位置,不过快递员会记录快递的位置,要取回顾客的快递,只需要提供顾客的编号即可。变量也一样,你不需要知道信息存储在内存中的哪个位置,只需要记住存储变量时所用的名字即可。
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/051-1.jpg?sign=1739252244-yj6gUzeLTRUCktBz4zBZ67rmRoRO413c-0-813d3fdd354cc345a4993bdbb77da5e9)
图2.3 货物架中贴着标签的快递
2.5.1 变量赋值及使用
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/40266-00-051-02.jpg?sign=1739252244-QdAwitTApFLU7HRZsrVWd8piCwfAjwxI-0-33a094a1f48b33d1d20ba6799406b5d3)
在PHP中使用变量之前不需要声明变量(PHP 4之前需要声明变量),只需为变量赋值即可。PHP中的变量名称用“$+标识符”表示。标识符是由字母、数字和下画线组成的,并且不能以数字开头。另外,变量名是区分大小写的。
变量赋值是指给变量赋予一个具体的数据值,对于字符串和数字类型的变量,可以通过“=”来实现,其格式为:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/051-2.jpg?sign=1739252244-4ycklbsNBssoDcIGMOAyPqT6mkGgNjE8-0-a1ae2c500d0fafef5802af850d813a17)
对变量命名时,要遵循变量命名规则。下面的变量命名是合法的:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/051-3.jpg?sign=1739252244-fGkrlvcrrQvgYkmJBFj8DcKcNFgZ5caY-0-2d1c8a742a9bcdf035b2bc560efed0cf)
下面的变量命名则是非法的:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/051-4.jpg?sign=1739252244-dQn4nNCegSOYpjsQ8cQipGeUKYsSbLWk-0-f46f0cfa1431fd777a8516075098b4fc)
除了直接赋值,还有两种方式可以为变量赋值。一种是变量间的赋值,变量间的赋值是指赋值后两个变量使用各自的内存,互不干扰,代码如下:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/052-1.jpg?sign=1739252244-pinl5HQpfSZpmvhBB4tekEboipMRv0jI-0-159e2ae08764cdbfc9b7ba13637d8294)
结果如下:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/052-2.jpg?sign=1739252244-ePxihRLYZ0glIbvKKVhlFINHG1QTZ5TB-0-9b41b54fc666275674b639d9f7d49ff8)
变量间的赋值就像在网上买了一个商品,一天后又下单买了相同的商品。这样在快递存放处就有两个一样的快递,这两个快递占用两个不同的货架位置,互不干扰。
另一种是引用赋值。从PHP 4开始,PHP引入了引用赋值的概念。引用赋值的概念是用不同的名字访问同一个变量内容,当改变其中一个变量的值时,另一个变量的值也跟着发生变化。使用&符号来表示引用,例如,变量$j是变量$i的引用,当给变量$i赋值后,$j的值也跟着发生变化。代码如下:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/052-3.jpg?sign=1739252244-7R2VKxKjA4Uw3rnHrMBfBVDleLxoeGRQ-0-98e575f996f7d3000e7dc249f59ddf71)
结果如下:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/052-4.jpg?sign=1739252244-b0TBJqHyyTSAE7dzFQsWOAEdZyu3HVQM-0-83f843687c7ce06f972bcd6e2c1a832d)
引用赋值就像在填写快递信息时,为避免和因重名被别人误取快递,在“收货人”位置上写了两个名字,一个是真名,另一个是昵称。尽管是两个名字,但却是同一个商品,占用同一个货架。
学习笔记
复制和引用的区别在于:复制是将原变量的内容复制下来,开辟一个新的内存空间来保存,而引用则是给变量的内容再取一个名字。
2.5.2 PHP预定义变量
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/40266-00-053-01.jpg?sign=1739252244-bfWIoFdAyXvrFwD3la0fpqsmYMW5Rny6-0-0f883f9d7b83bc0511f4c84e314ed977)
PHP还提供了很多非常实用的预定义变量,通过这些预定义变量可以获取用户会话、用户操作系统的环境和本地操作系统的环境等信息。常用的预定义变量如表2.5所示。
表2.5 常用的预定义变量
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/053-1.jpg?sign=1739252244-c5GlKvDVwxwk8mZ5FCCd0ls1j0jmllmx-0-e40a4119b744637e70c7f914df601d6e)