变量特点

弱类型,值传递与引用传递,动态变量名(可变变量,变量标识符可以来自另一个变量的值)

检测与删除

isset():检测变量是否存在且值非null
unset():删除变量,无返回值
empty():是否为空,空字符串,空数组,null,false都为空
is_null():null/赋值为null,未赋值/unset()

数据类型

变量访问方式受到以下限制:数据类型,作用域,生命周期
1.基本类型
整数(int)、浮点数(float)、字符(string)、布尔(boolean)
2.复合类型
对象(object)、数组(array)
3.特殊类型
空(null)、资源(resource)
类型查询可用检测函数is_int()等返回布尔值或者gettype()返回类型

类型转换

1.自动转换
一般只发生在基本类型参与的算术或字符串运算中,表达式根据操作符将操作数转为一致的数据类型
2.强制转换
分为临时转换和永久转换,临时转换可使用类型提示符((int)或类型函数(intval()…);永久转换使用函数settype($var, $type)

作用域

  • 变量作用域,也叫”变量范围”, 即定义变量时的上下文环境,通俗的说,就是变量的生效范围
  • 一个变量必定属于一个作用域, 这个作用域也包括了当前作用域中引入其它文件,也有不受作用域限制的变量,例如超全局变量, 在程序中任何地方都是有定义的
  • 函数作用域: php 中只有函数可以创建作用域, 函数之外的代码全部在全局空间中
  • php中没有块作用域

    根据作用域不同,变量可以分为三类:

  • 私有变量,函数中定义的变量

  • 全局变量,函数之外的变量
  • 超全局变量,也叫预定义变量,访问不受作用域限制

    静态变量

  • 当多次调用同一函数,且要求每次调用之间共享或保留某些变量的时候

  • 尽管全局变量也可以办到,但没必要, 采用局部静态变量更合适

    变量过滤器

    用于验证和过滤来自非安全来源的外部数据(表单,cookie,服务器变量,web服务数据,数据库查询结果)

    预定义常量

    https://www.php.net/manual/zh/reserved.constants.php

魔术常量

  • 魔术常量也属于”预定义常量”, 比较特殊所有单独列出
  • 所谓”魔术”, 是指常量的值, 会随它们在代码中的位置改变而改变
  • 魔术常量不区分大小写, 但是推荐全部大写

    常量命名空间

  • 当使用的第三方组件(类库)中存在也当前脚本命名冲突的常量名时,可以用命名空间解决

  • 命名空间允许将同名的标识符,定义在不同的空间中,类似同名文件可存放在不同目录下
  • 命名空间使用关键字namespace声明, 必须放在脚本的首行,且前面不允许有任何输出