PHP表达式_3_2_变量
以下为学习孔祥盛主编的《PHP编程基础与实例教程》(第二版)所做的笔记。
PHP变量可分为自定义变量和预定义变量。
以下所谈到的变量均为自定义变量。
1.变量的基本概念
PHP的变量名遵循以下规则:
(1)变量名必须以美元符号($)开头,如$username。
(2)变量名的第一个字符必须是字母或下画线(不能是数字),变量名称可以为字母、数字和下画线的组合,如$user_name_1。
(3)PHP中的变量名是区分大小写的。这意味着$userName和$UserName是截然不同的两个变量。
和传统的高级语言不一样,PHP对于已经定义的变量可以通过重新赋值的方法修改该变量的值,甚至修改该变量的数据类型。
1 <?php 2 //以下语句修改$userName变量的值 3 $userName="张三"; 4 $userName="李四"; 5 6 //以下语句既修改$sex变量的值,又修改了$sex变量的数据类型 7 $sex=FALSE; 8 $sex="男"; 9 10 echo $userName; 11 echo "<br/>"; 12 echo $sex; 13 ?>
输出:
李四
男
2.变量的赋值方式
变量赋值是指赋予变量具体的数据,使用赋值运算符 “ = ” 来实现。
PHP提供两种赋值方式:传值赋值和传地址赋值。
(1)传值赋值方式
传值赋值方式将一个值 “ 拷贝 ”赋值给某个变量。
1 <?php 2 $age1 = 18; 3 //以下语句进行传值赋值,变量$age1的值18赋值给变量$age2 4 $age2 = $age1; 5 //以下语句修改变量$age2的值,此时变量$age2在内存中开辟新空间存储值20 6 $age2 = 20; 7 echo $age1; //该语句输出$age1变量的值为18 8 echo "<br/>"; 9 echo $age2; //该语句输出$age2变量的值为20 10 ?>
输出:
18 20
说明:
① 程序执行 “ $age2 = $age1 ” 后,内存中并没有新增 $age2 的变量值18,这是由于PHP为了提高内存的使用效率,采用了 “ 写时拷贝 ”的原理对变量进行赋值。简言之,除非发生写(或修改)操作,否 则指向同一个地址的变量值对象将不会被拷贝,这样即节省内存又提高了代码的执行效率。
② 执行 " $age2 = 20; " 语句后,内存才添加了变量 $age2 的变量值20。
(2)传地址赋值方式
传地址赋值是将源变量的内存地址赋值给新的变量,即新的变量引用了源变量的值,改动新变量的值将影响到源变量的值,反之亦然。传地址赋值意味着两个变量都指向同一个数据,不存在任何数据的拷贝过程。PHP通过在源变量($oldVariable)前追加 “ & “ 符号实现传地址赋值,语法格式为: $newVariable = &$oldVariable。
<?php $age1 = 18; //进行传地址赋值,变量$age1的地址(引用)赋值给变量$age2 $age2 = &$age1; $age2 = 20; echo $age1; //该语句输出$age1变量的值为20 echo "<br/>"; echo $age2; //该语句输出$age1变量的值为20 ?>
输出:
20 20
说明:
① 程序执行 " $age2 = &$age1 " 后,变量 $age2与变量 $age1 指向了内存中的同一个变量值18。
② 程序执行 “ $age = 20 ” 语句后,变量 $age2 与变量 $age1 指向了内存中同一个变量值20。
3.可变变量
可变变量允许PHP程序动态地改变一个变量的变量名,可变变量的工作原理是用一个变量的 “ 值 ” 作为另一个变量的 “ 名 ”。
1 <?php 2 $varname = "age"; 3 //用$$varname取代$age。下面代码等价于: $age = 20; 4 $$varname = 20; 5 echo $age; //输出$age变量的值:20 6 ?>
输出:
20
原文地址:https://www.cnblogs.com/xiaoxuStudy/p/11603262.html
- 2017.10.25水题大作战题解
- Angular开发实践(四):组件之间的交互
- Leetcode-Easy 70. Climbing Stairs
- Angular开发实践(八): 使用ng-content进行组件内容投射
- Angular开发实践(六):服务端渲染
- Leetcode-Easy 657. Judge Route Circle
- 洛谷P1138 第k小整数
- Leetcode-Easy 796. Rotate String
- 2017.10.23解题报告
- Leetcode-Easy 461.Hamming Distance
- 洛谷P1439 最长公共子序列(LCS问题)
- Leetcode-Easy 575. Distribute Candies
- 洛谷P2115 [USACO14MAR]破坏Sabotage
- 修改nw.js的exe文件使其请求管理员权限
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 最新!中国天气网api接口调用,key获取方式,数据请求秘钥获取,城市id获取方法
- Jmeter接口压测快速入门
- 超简单!Qt Designer插入图片,styleSheet加入图片,Qt加入背景图片
- 关于领域模型转换的那些事儿
- Windows图标显示异常解决方法。桌面图标异常,开始菜单图标异常,任务栏图标异常。图标缓存位置。
- Python基本语法与数字类型
- Qt Designer设置背景图片、颜色不影响其它组件小技巧,控件层级设置,组件的继承,styleSheet设置样式。
- 搭建高可用的Harbor
- PyQt5 技术篇-控件长宽度、高度设置,组件大小设置,组件尺寸查看。
- python基本数据类型
- Python 技术篇-PyQt5动画功能演示,组件移动、尺寸改变动画演示
- 搭建k8s高可用集群 - 二进制方式
- DeepWalk:图网络与NLP的巧妙融合
- 基于kubeadm搭建k8s高可用集群
- 扑克牌例题与Collections工具类