Blogger Information
Blog 34
fans 0
comment 0
visits 18325
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
0426-变量与常量
千山暮雪
Original
654 people have browsed it

变量

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

  • 命名规则

    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 完整的类名,
Correcting teacher:灭绝师太灭绝师太

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post