Blogger Information
Blog 16
fans 0
comment 0
visits 13946
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP初级变量类型转换与变量和常量的声明方式
wen。
Original
871 people have browsed it

一、数据类型转换

变量是用于存储信息的”容器”,php变量类型有int、string、array和object,我们在项目中往往需要进行类型转换。

转换方式 函数
临时转换 (int),(string),(array),(object)…
自动转换 要求参与计算的数据都是数值类型,如果不是,就会触发自动转换
强制转换 settype()

1.1 临时转换

特点:临时转换并不会改变变量的原始数据

1.11 int

我们在获取url地址的时候,需要进行id判断并且需要类型相同,这个时候就需要用到临时转换

  1. <?php
  2. //url中的queryString
  3. //测试地址 http://localhost/demo?=id=1&name=Tome
  4. var_dump($_GET['id']);
  5. //输出 string(1) "1"
  6. //注意:url中的地址全部默认为字符串
  7. //如果需要进行判断,需要把id转为整数才方便运算
  8. $id = (int)$_GET['id'];
  9. //var_dump($id);
  10. //输出 int(1)
  11. if($id === 1){
  12. echo "找到数据了";
  13. }

1.12 string

  1. //整数转换为字符串
  2. $num = 123;
  3. var_dump($num,((string)$num));
  4. //输出 string(3) "123"

1.13 array

字符串进行数组转换,这个比较少用到

  1. // 字符串转换成数组类型
  2. $str = "php";
  3. var_dump((array)$str);
  4. //输出 array(1) { [0]=> string(3) "php" }
  5. var_dump((array)$str[0]);
  6. //输出 array(1) { [0]=> string(1) "p" }

1.14 object

  1. // 字符串转换成对象
  2. var_dump((object)$str,(object)$str["scalar"]);
  3. //输出 object(stdClass)#1 (1) { ["scalar"]=> string(3) "php" }
  4. //输出 object(stdClass)#2 (1) { ["scalar"]=> string(1) "p" }

二、自动转换

根据操作符对操作数的类型要求进行转换,转换机制由系统操作;每一种操作符,它要求的操作数类型都是固定的,如果不满足就自动转换

2.1 “+”

要求参与计算的数据都是数值类型,如果不是,就会触发自动转换

  1. //自动转换:系统
  2. $n = 123;
  3. echo $n + '456';
  4. //输出 579
  5. // "+" 参与计算类型要求数值类型,如果不是,就会触发自动转换
  6. echo $n + (int)'456';
  7. //输出 579
  8. echo $n + '456php';
  9. //输出 579
  10. //如果参数计算类型有字符串类型,则会把起始位置给省略掉

2.2 “.”

要求字符串拼接,如果不是就会触发自动转换

  1. // "." 要求字符串类型进行拼接,如果不是就会触发自动转换
  2. echo "php" . 123;
  3. //输出 php123
  4. //自动转换形式: 等价于
  5. echo "php" . (string)123;
  6. //输出 php123

2.3 布尔类型

最常用的布尔类型

  1. //最常用的布尔转换
  2. if(!$email) echo '未定义邮箱';
  3. //输出 未定义邮箱
  4. //$email 未定义,NULL
  5. var_dump($email);
  6. //输出 NULL
  7. var_export((bool)$email);
  8. //输出 false

三、 强制转换

强制转换后的变量类型就会永久转换,所以强制转换主要针对变量

3.1 settype($var,$type)

  1. //永久转换:只针对变量
  2. $price = 4399;
  3. echo gettype($price);
  4. //输出 integer
  5. settype($price,'string');
  6. //设置变量类型
  7. echo gettype($price);
  8. //输出 string

四、类型检测

转换方式 函数
标量 is_int(),is_string(),is_bool(),is_numberic(),is_scalar()…
复合 is_array(),is_object()
特殊 is_null(),is_recsource()

4.1 标量

4.11 is_int()

检查参数必须是数值类型

  1. function sum2($a, $b){
  2. if(is_int($a) && is_int($b))
  3. //is_int()检查参数必须为数值,否则会报错
  4. //123 和 '123' 匹配失败
  5. printf("%d + %d = %d", $a, $b, ($a + $b));
  6. else
  7. echo "参数类型错误";
  8. }
  9. sum2(2,3);
  10. //输出 2 + 3 = 5
  11. sum2(2,"3");
  12. //输出 参数类型错误

4.12 is_numberic
检查参数是否是数值或数值型的字符串

  1. <?php
  2. //类型检测
  3. function sum($a, $b)
  4. {
  5. //is_numeric()检查参数是否是数值或数值型的字符串
  6. // 123 和 '123'都可以匹配成功
  7. if(is_numeric($a) && is_numeric($b))
  8. printf("%d + %d = %d", $a, $b, ($a + $b));
  9. else
  10. echo "参数类型错误";
  11. }
  12. sum(2, 3);
  13. //输出 2+3=5
  14. sum(2, "3");
  15. //输出 2+3=5
  16. sum("php","cn");
  17. //输出 参数类型错误

4.13 is_scalar()
检测变量类型是否是标量

  1. $a = 123;
  2. $b = [1,2,3];
  3. var_export(is_scalar($a));
  4. //输出 true
  5. var_export(is_scalar($b));
  6. //输出 false

5.1 复合

5.11 is_array()
  1. $arr = [1,2,3];
  2. function getArr($arr){
  3. if(is_array($arr))
  4. var_dump($arr);
  5. else
  6. echo "参数类型错误";
  7. }
  8. getArr($arr);
  9. //输出 array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }

5.2 特殊

5.21 is_null
  1. $str = NULL;
  2. function getNull($str){
  3. if(is_null($str))
  4. echo "参数类型为NULL";
  5. else
  6. echo $str;
  7. }
  8. echo getNull($str);

六、变量

6.1 命名规则

命名方式 应用场景
驼峰式 $timePirce:变量,对象的属性和方法:getUser()
蛇形 set_public():函数
帕斯卡 UserModel():类,与驼峰式很像,所以也叫”大驼峰“
全大写 常量

6.2 变量声明

  • 变量必须要用”$“为前缀:$name
  • 严格区分大小写

6.3 变量赋值

6.31 值传递
  1. //默认是”值传递“
  2. $price1 = 4399;
  3. $price2 = $price1;
  4. printf("price1 = %d, price2 = %d",$price1,$price2);
  5. //打印 price1 = 4399, price2 = 4399
  6. $price1 = 5288;
  7. printf("price1 = %d, price2 = %d",$price1,$price2);
  8. //打印 price1 = 5288, price2 = 4399
6.32 引用赋值
  1. //引用传递
  2. //引用赋值其实就是给原始变量起一个别名,并未创建新变量
  3. $price1 = 4399;
  4. $price2 = &$price1;
  5. printf("price1 = %d, price2 = %d",$price1,$price2);
  6. //打印 price1 = 4399, price2 = 4399
  7. $price1 = 5288;
  8. printf("price1 = %d, price2 = %d",$price1,$price2);
  9. //打印 price1 = 5288, price2 = 5288

6.4 预定义变量

预定义变量 说明
超全局变量 数组,任何地方都可以访问,不受作用域限制
$GLOBALS 引用全局作用域中可用的全部变量
$_SERVER 服务器和执行环境信息
$_GET 通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组
$_POST 当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本
$_COOKIE 通过 HTTP Cookies 方式传递给当前脚本的变量的数组
$_SESSION 当前脚本可用 SESSION 变量的数组

七、常量

固定的值,一旦创建不可更新,不可删除,常量不是变量,前面不要加“$”,常量推荐全部大写,多个单词之间用下划线连接

7.1 define()

  1. //函数
  2. define("NAME","Tome");

7.2 const

  1. //关键字
  2. const NATION = '中国';
  3. echo NATION;
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