Blogger Information
Blog 70
fans 4
comment 5
visits 104709
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP:变量的类型转换方式,变量值传递与值引用的区别,变量作用域和魔术常量
JiaJieChen
Original
783 people have browsed it

PHP:变量的类型转换方式,变量值传递与值引用的区别,变量作用域,魔术常量

一.变量/常量命名

①变量命名

  • 仅允许使用: 英文字母(a-z,A-Z),数字(0-9),下划线(\_)或他们的组合
  • 不允许使用数字开头
  • 必须使用”$“美元符为前缀
  • 严格区分大小写
  • 驼峰命名法

②常量命名

  • define(): 函数
  • const: 关键字作为前缀
  • 通常,常量都用大写字母表示

二.变量的类型转换方式

转换方式 函数
临时转换 (int),(string),(array),(object)…
自动转换 根据操作符对操作数的类型要求进行
强制转换 settype()

①临时转换

大家可以看到$str没有转换之前是string 字符串类型,下面我们用(int)临时转换为数值型

大家可以看到现在进行类型转换之后$str变成了int数值型,和$int一模一样的类型值,但是这种类型转换不是永久的!而是临时的!

②自动转换:自动转换也就是让浏览器自己去解析转换

类型没有转换之前是字符串 15岁

用@符号抑制报错浏览器将会自动转换类型,类型转换之后15岁变成65,自动和数值类型相加,舍去了后面的字符串文字

③强制转换:settype()

$arr 没有转换类型之前是一个数组Array

强制类型转换为string,输出的类型就是字符串string

代码块

  1. <?php
  2. //定义全局变量
  3. $str = '15';
  4. $int = 30;
  5. //使用(int) 临时把字符串转换为数值
  6. echo (int)$str + $int .'<br>';
  7. var_dump((int)$str,$int);
  8. echo "<hr>";
  9. //自动转换类型
  10. $age = "15岁";
  11. //@符 强制解除报错,会让浏览器自动解析
  12. @$age += 50;
  13. echo $age;
  14. echo "<hr>";
  15. //settype()强制类型转换,把一个数组类型转换为string类型
  16. $arr = ['1','2','3'];
  17. settype($arr,'string');
  18. echo gettype($arr);
  19. ?>

三.变量值传递与值引用的区别

①变量值传递

变量a等于50 变量b等于变量a,输出变量b也等于50,这叫变量值传递,我们再看看更改变量a的值,变量b会不会改变属性

我们可以看到,变量a的值改变成100,变量b的值没有变化还是50,变量值传递等于每个人都有相同的值,重新更改赋值变量并不能改变被赋值本身的值,如果在下面在输出一个 变量b等于a呢?

我们可以看到,如果在下面在输出一个 变量b等于a,则变量b等于变量a最新的那个值,也就是说浏览器是从上到下开始解析的,这一点非常重要

②变量引用值传递

变量值引用,用一个&符号放在要引用的变量前面,接下来我们改变一下$c的值,看看$a会不会受影响

大家可以看到,我们在这里改变了$c的值,$a的值也会收到影响,说明变量值传递和变量值引用是不一样的!

③empty()和isset()

方法 含义
isset() 用来检测变量是否被定义,若变量存在并且值不为null才返回true 否则返回false
empty() 检验变量是否为空,为空返回true 不为空 返回false
  • empty()

    变量有值不为空,返回false

变量没有值返回true

  • isset()

    变量值不存在返回false

变量值存在返回true

代码块

  1. <?php
  2. //值变量传递
  3. //变量a等于50 变量b等于变量a
  4. $a = 50 ;
  5. $b = $a ;
  6. $a = 100 ;
  7. $b = $a ;
  8. echo $b;
  9. echo '<hr>';
  10. //变量值引用 用&符号
  11. $c = 50;
  12. $a = &$c;
  13. //改变一下$c的值
  14. $c = 100;
  15. echo $a ;
  16. echo "<hr>";
  17. // $c = null;
  18. //empty 检验变量是否为空,为空返回true 不为空 返回false
  19. var_dump(empty($c));
  20. echo "<hr>";
  21. //isset 用来检测变量是否被定义,若变量存在并且值不为null才返回true 否则返回false
  22. var_dump(isset($c));

四.变量作用域和魔术常量

名称 含义
全局变量 全局变量,声明全局外部的变量,不在函数里面的变量,函数内部无法直接访问全局变量,必须加上global 才访问全局变量
局部变量 局部变量,声明在函数里面的变量

①全局变量:声明全局外部的变量

全局变量,函数内部无法直接访问外面的全局变量,要加上global才能访问到

用global访问外面的全局变量,多个值用,号隔开

②局部变量:声明在函数里面的变量

局部变量声明在函数内部,外部无法访问到函数内部声明的变量

③魔术常量:魔术常量长得像这样__XXXX__,看见两端有下划线的就是魔术常量

系统预定义魔术常量 含义
__FILE__ 默认常量,PHP程序文件名
__LINE__ 默认常量,PHP程序行数

__FILE__默认常量,PHP程序文件名也就是当前文件所在的目录

__LINE__默认常量,PHP程序行数

代码块

  1. <?php
  2. //变量作用域:全局变量声明全局外部的变量
  3. //这是全局变量
  4. // $a = 100;
  5. // $b = 20;
  6. // function Sum(){
  7. // global 访问外面的全局变量
  8. // global $a ,$b;
  9. // 如果没有global 则不能直接访问外面的全局变量
  10. // return $a * $b ;
  11. // }
  12. // echo Sum();
  13. //局部变量:声明在函数内部
  14. function Sum(){
  15. $a = 50 ;
  16. $b = 30 ;
  17. return $a / $b ;
  18. }
  19. echo Sum();
  20. echo "<hr>";
  21. //声明在函数内部的变量无法访问
  22. echo $a ;
  23. echo "<hr>";
  24. //系统预定义魔术变量
  25. // echo __FILE__; //当前文件所在的目录
  26. var_dump( __LINE__);
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