博客列表 >0426-变量与常量

0426-变量与常量

千山暮雪
千山暮雪原创
2021年04月28日 00:40:55653浏览

变量

变量是用于储存信息的容器.

  • 命名规则

    1. 变量必须以$开头,$符不是变量的一部分,仅表示后面的标识符是变量名;
    2. 除了$以名,以字母/下划线开头, 后面跟着数字/字母/下划线
    3. 变量名不能包含空格
    4. 变量名区分大小写
  • 可变变量
    变量名可变, 将变量名存储在另外一个变量中
    $$

  1. $user = 'ali';
  2. $$user = 'haha'; //可变变量
  • php变量的传递
    变量的传递有值传递和地址传递(引用传递)
    = 值传递
    = & 地址传递
    区别: 值传递是把A变量的“值”复制一份,再赋值给B变量。A,B两个变量没有任何关系。平时工作中80%多的写法都采用值传递。
    引用传递是把A变量的值的空间地址给B变量,这时候A,B两个变量共用一个数据空间。A,B指向同一个地址。这时候两个变量是紧密连接在一起的,有关系。
  1. $test1 = 'hello';
  2. $test2 = $test1;
  3. $test3 = &$test1;
  4. printf("test1:%s, test2:%s, test3:%s", $test1,$test2,$test3); // 输出为test1:hello, test2:hello, test3:hello
  5. echo "<hr>";
  6. // test1更新值,
  7. $test1 = 'world';
  8. printf("test1:%s, test2:%s, test3:%s", $test1,$test2,$test3); // 输出为test1:world, test2:hello, test3:world
  • 销毁变量
    unset($变量),使用unset销毁的是变量名, 值还在
  1. $test1 = 'hello';
  2. $test3 =& $test1;
  3. unset($test1);
  4. printf("test1:%s, test3:%s",$test1,$test3); //输出为 test1:, test3:hello
  • 变量的类型转换方式

    php是弱类型语言,变量的类型随值的变化而变化.
    php变量有8种变量类型:4标量类型(int, float, string, bool); 2复合类型(array, object); 2特殊类型(resource, null)

    • 强制类型转换
      1. $num1='12';
      2. var_dump($num1,(int)$num1,(float)$num1); //string(2) "12" int(12) float(12)
    • 系统自动转换
      当变量参与运算时,系统会自动转换, 如+ - * / 会把变量转化为数字运算..会把变量转为字符参与运算.
      1. // 数值运算
      2. $foo = '100pages';
      3. @$foo += 200;
      4. var_dump($foo);// int(300)
      5. // 字符串拼接符
      6. var_dump($foo);// int(300)
      7. echo 'how are you' . 100 . '<br>';
    • 布尔类型转换
      0、空为假,非0非空为真
      1. if (!'0') : // 0为false
      2. echo 'true'; //true
      3. endif;
    • 永久类型转换
      使用settype函数.
      1. settype($p,'integer');
      2. echo gettype($p);//integer
  • 变量的作用域
    1、全局变量:在函数外面定义的变量. $GLOBALS保存的是全局变量的所有的值
    2、局部变量:在函数里面定义的变量,默认情况下,函数内部是不会去访问函数外部的变量,要在一个函数中访问一个全局变量,需要使用 global 关键字。
    3、超全局变量:是在全部作用域中始终可用的内置变量
    $GLOBALS: 引用全局作用域中可用的全部变量
    $_SERVER: 服务器和执行环境信息
    $_GET :通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组
    $_POST:当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本
    $_FILES:通过 HTTP POST 方式上传到当前脚本的项目的数组
    $_COOKIE:通过 HTTP Cookies 方式传递给当前脚本的变量的数组
    $_SESSION:当前脚本可用 SESSION 变量的数组
    $_REQUEST: 默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组
    $_ENV: 通过环境方式传递给当前脚本的变量的数组

常量

常量是一个简单值的标识符(名字)。常量值被定义后,在脚本的其他任何地方都不能被改变。
注意:常量没有作用域的概念

  • 命名规则
    由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
    常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。

  • 常量的定义

  1. const关键字 字面量
    1. const GENDER = '女';
  2. define()函数定义常量
    define(常量名, 值, [是否区分大小写]) true不区分,默认false
    2.1 常量名推荐使用全大写,多个单词之间用下划线_连接
    2.2 定义常量可以使用特殊字符, 但是在调用时必须使用constant获取
    1. define('%%', 'tom');
    2. echo constant('%%');
  • 类的常量
    类常量只能使用const定义

  • php中魔术常量有哪些?
    魔术常量它们的值随着它们在代码中的位置改变而改变

名称 说明
LINE 文件中的当前行号。
FILE 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
DIR 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(FILE)。除非是根目录,否则目录中名不包括末尾的斜杠。
FUNCTION 当前函数的名称。匿名函数则为 {closure}。
CLASS 当前类的名称。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 CLASS 对 trait 也起作用。当用在 trait 方法中时,CLASS 是调用 trait 方法的类的名字。
TRAIT Trait 的名字。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
METHOD 类的方法名。
NAMESPACE 当前命名空间的名称。
ClassName::class 完整的类名,
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议