什么是变量

变量通俗的来说是一种容器。根据变量类型不同,容器的大小不一样,自然能存放的数据大小也不相同。在变量中存放的数据,我们称之为变量值。

PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。在PHP中变量的命名规则通常是以字母或下划线开头,由字母、数字、下划线组成。变量名通常由声明变量所代表意义的英文单词组成。单词与单词之间通过_分隔,或者第一个单词首字母小写,之后每个单词首字母大写。这种命名方式我们称之为驼峰命名法。良好的命名规范有助于提高我们代码的可读性。<?php

$name = '屋脊猫';

$_age = 1;

$sex = '男';

echo "姓名:{$name},年龄:{$_age}, 性别:{$sex}";

$1sex = '男'; // 错误,不能以数字开头

?>

变量的初始化

变量的初始化是给变量设置一个默认值(或者是需要的值),初始化的过程中PHP会给变量分配存储空间以及将变量值所在存储空间地址保存在变量中。<?php

$a = 1; // 初始化一个整形变量

?>

虽然在PHP中不需要初始化变量,但对变量进行初始化是个好习惯。未初始化的变量具有其类型的默认值

● 布尔类型的变量默认值是 FALSE

● 整形和浮点型变量默认值是零

● 字符串型变量(例如用于 echo 中)默认值是空字符串

● 数组变量的默认值是空数组

使用未初始化的变量会发出 E_NOTICE错误,但是在向一个未初始化的数组附加单元时不会。

依赖未初始化的变量的默认值在某些情况下会有问题,比如在之后的编码中我们需要经常的将一个文件通过include包含到当前文件,如果两个文件中有相同的变量名,此时的变量值则不是我们需要的默认值了。另外在PHP 5.4.0之前的版本中把 register_globals打开是一个主要的安全隐患。在PHP 5.4.0之后该配置已被移除。

变量的赋值方式

在PHP中有两种传值方式,分别为传值赋值和引用赋值。

1.传值赋值

传值赋值是PHP中默认的传值方式。那也就是说,当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。这意味着,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。如:<?php

$var1 = 1;

$var2 = $var1;

$var1 = 3;

echo $var1; // 3

echo $var2; // 1

?>

2.引用赋值

引用赋值意味着新的变量简单的引用了原始的变量,改变了新的变量的值将影响到原始的变量的值,反之亦然。使用引用赋值,只需简单地将一个 & 符号加到将要赋值的变量前(源变量)如:<?php

$oldVar = 1;

$newVar = &$oldVar;

$newVar = 2;

echo $oldVar; // 2

echo $newVar; // 2

?>

&符在C语言中称之为取地址符,变量保存了变量值在内存中的存储地址,通过取地址符可以将一个变量保存的变量值的地址赋值给另一个变量。两个变量的值指向了同一个内存地址,所以当我们修改其中一个变量的值时,另一个变量的值自然而然的随之被改变。

有一点重要事项必须指出,那就是只有有名字的变量才可以引用赋值。<?php

$foo = 25;

$bar = &$foo; // 合法的赋值

$bar = &(24 * 7); // 非法; 引用没有名字的表达式

?>

在(24*7)这个表达式中因为没有保存在变量中,所以没有明确的内存地址,通过取地址符去获取在内存中存储的地址是不可取的。

php初始化函数赋值,PHP变量的初始化以及赋值方式介绍相关推荐

  1. php对多个变量进行初始化,PHP如何对变量进行初始化和初始化

    PHP如何对变量进行初始化和初始化 发布时间:2020-06-26 18:10:48 来源:亿速云 阅读:158 作者:Leah PHP如何对变量进行初始化和初始化?针对这个问题,这篇文章详细介绍了相 ...

  2. javascript函数执行前期变量环境初始化过程

    示例代码如下: var d = '全局的'; (function(){  alert(d == undefined);//结合步骤4  var d = 123; })(); (function(a){ ...

  3. 结构体类型的变量的初始化

    上一篇文章讲了结构体的定义以及结构体类型变量的定义,这一篇我们来讲一下结构体变量的初始化.结构体变量的初始化既可以在定义变量的时候初始化,也可以定义完变量后,在单独给变量的成员变量赋值. 先定义一个结 ...

  4. 2021-02-24let和const,变量的解构赋值,函数扩展

    文章目录 let 1.ES6简介 2.let关键字 2.1 不存在变量提升 2.2 暂时性死区 2.3 不允许重复声明 3.块级作用域 3.1 为什么需要块级作用域 缺点1:内部变量可能会覆盖外层的变 ...

  5. Java类的初始化、变量的初始化

    Java类的初始化.变量的初始化 知识点 Java常量,   final 修饰,值被设定后不能再被修改 静态变量里,  static 修饰,顾名思义,无须创建对象,便可在内存中申请一个存储空间进行存储 ...

  6. android 初始化类,Android 常用编程技巧/Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)...

    1.设置屏幕的亮度: WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.screenBrightness=1.0f; getW ...

  7. Java类的初始化顺序 (静态变量、静态初始化块、变量、初始...

    很有意思的一篇文章 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方法 2.有继承的情况 父类静态变量->父类静态初始化块->子类静态变量- ...

  8. (转)对各种初始化函数的理解:OnInitDialog、InitInstance、InitApplication函数的理解...

    InitInstance和InitApplication 是 APP 类的初始化.而 OnInitDialog 是在 Dialog 类初始化时调用的函数. ★ 应用程序相关配置,一般在InitInst ...

  9. java类的静态成员初始化_Java类的初始化顺序 (静态变量、静态初始化块、变量、初始......

    很有意思的一篇文章 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方法 2.有继承的情况 父类静态变量->父类静态初始化块->子类静态变量- ...

最新文章

  1. 2020牛客多校第一场B虚树+质数筛+换根dp
  2. 前端要懂mysql_【灵魂拷问】你真的懂得Mysql的管理和使用吗?
  3. python 封装_python接口自动化学习笔记(封装方法用于读取excel)
  4. python中opencv安装_怎么为python安装opencv模块-百度经验
  5. 计算机网络总结:第五章 链路层
  6. SRM 588 D2 L2:GUMIAndSongsDiv2,冷静思考,好的算法简洁明了
  7. 用数学运算实现数据无损压缩的算法
  8. java 开发帮助_java的简单编程请帮助
  9. 在Javascript中闭包(Closure)
  10. WIN7 SP1系统浏览器怎么离线升级到IE11,怎么解决?
  11. HASH加密算法:MD4、MD5、SHA1
  12. 来!PyFlink 作业的多种部署模式
  13. 从后端到页面:如何全方位监控 Ruby 应用?
  14. “梦回三国”系列总结
  15. 2022年茶艺师(初级)考试试卷及茶艺师(初级)模拟试题
  16. 2022年自考专业考试(计算机应用)计算机系统结构练习题
  17. springboot默认日志log,控制台不打印mybatis sql执行日志解决办法
  18. Android应用APP脱壳笔记
  19. 上月和本月对比叫什么_线雕前后对比,线雕做完后要注意什么事项即将上线
  20. 所有weblogic版本下载

热门文章

  1. Hyaluronate-Thiol,HA-Thiol,HA-SH,巯基修饰透明质酸, 巯基功能化透明质酸
  2. SD nand 与 SD卡的SPI模式驱动
  3. 线性表——顺序数组seqList的实现 C++
  4. jetbrains系列宝藏插件
  5. C语言字符串之间添加空格
  6. 【捷哥浅谈PHP】第十一弹---NoSQL数据库之MongoDB的CURD操作(二)
  7. 计算机学科评估b是水平,学科评估C是什么水平?学科评估B值得读吗?
  8. 简述VL163 QFN28(USB-C Gen2 10GpbsSwtich芯片)运用
  9. WIFI模块接入测试
  10. python十进制转二进制的方法