批改状态:合格
老师批语:
变量是用于存储信息的”容器”,php变量类型有int、string、array和object,我们在项目中往往需要进行类型转换。
| 转换方式 | 函数 |
|---|---|
| 临时转换 | (int),(string),(array),(object)… |
| 自动转换 | 要求参与计算的数据都是数值类型,如果不是,就会触发自动转换 |
| 强制转换 | settype() |
特点:临时转换并不会改变变量的原始数据
我们在获取url地址的时候,需要进行id判断并且需要类型相同,这个时候就需要用到临时转换
<?php//url中的queryString//测试地址 http://localhost/demo?=id=1&name=Tomevar_dump($_GET['id']);//输出 string(1) "1"//注意:url中的地址全部默认为字符串//如果需要进行判断,需要把id转为整数才方便运算$id = (int)$_GET['id'];//var_dump($id);//输出 int(1)if($id === 1){echo "找到数据了";}
//整数转换为字符串$num = 123;var_dump($num,((string)$num));//输出 string(3) "123"
字符串进行数组转换,这个比较少用到
// 字符串转换成数组类型$str = "php";var_dump((array)$str);//输出 array(1) { [0]=> string(3) "php" }var_dump((array)$str[0]);//输出 array(1) { [0]=> string(1) "p" }
// 字符串转换成对象var_dump((object)$str,(object)$str["scalar"]);//输出 object(stdClass)#1 (1) { ["scalar"]=> string(3) "php" }//输出 object(stdClass)#2 (1) { ["scalar"]=> string(1) "p" }
根据操作符对操作数的类型要求进行转换,转换机制由系统操作;每一种操作符,它要求的操作数类型都是固定的,如果不满足就自动转换
要求参与计算的数据都是数值类型,如果不是,就会触发自动转换
//自动转换:系统$n = 123;echo $n + '456';//输出 579// "+" 参与计算类型要求数值类型,如果不是,就会触发自动转换echo $n + (int)'456';//输出 579echo $n + '456php';//输出 579//如果参数计算类型有字符串类型,则会把起始位置给省略掉
要求字符串拼接,如果不是就会触发自动转换
// "." 要求字符串类型进行拼接,如果不是就会触发自动转换echo "php" . 123;//输出 php123//自动转换形式: 等价于echo "php" . (string)123;//输出 php123
最常用的布尔类型
//最常用的布尔转换if(!$email) echo '未定义邮箱';//输出 未定义邮箱//$email 未定义,NULLvar_dump($email);//输出 NULLvar_export((bool)$email);//输出 false
强制转换后的变量类型就会永久转换,所以强制转换主要针对变量
//永久转换:只针对变量$price = 4399;echo gettype($price);//输出 integersettype($price,'string');//设置变量类型echo gettype($price);//输出 string
| 转换方式 | 函数 |
|---|---|
| 标量 | is_int(),is_string(),is_bool(),is_numberic(),is_scalar()… |
| 复合 | is_array(),is_object() |
| 特殊 | is_null(),is_recsource() |
检查参数必须是数值类型
function sum2($a, $b){if(is_int($a) && is_int($b))//is_int()检查参数必须为数值,否则会报错//123 和 '123' 匹配失败printf("%d + %d = %d", $a, $b, ($a + $b));elseecho "参数类型错误";}sum2(2,3);//输出 2 + 3 = 5sum2(2,"3");//输出 参数类型错误
4.12 is_numberic
检查参数是否是数值或数值型的字符串
<?php//类型检测function sum($a, $b){//is_numeric()检查参数是否是数值或数值型的字符串// 123 和 '123'都可以匹配成功if(is_numeric($a) && is_numeric($b))printf("%d + %d = %d", $a, $b, ($a + $b));elseecho "参数类型错误";}sum(2, 3);//输出 2+3=5sum(2, "3");//输出 2+3=5sum("php","cn");//输出 参数类型错误
4.13 is_scalar()
检测变量类型是否是标量
$a = 123;$b = [1,2,3];var_export(is_scalar($a));//输出 truevar_export(is_scalar($b));//输出 false
$arr = [1,2,3];function getArr($arr){if(is_array($arr))var_dump($arr);elseecho "参数类型错误";}getArr($arr);//输出 array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
$str = NULL;function getNull($str){if(is_null($str))echo "参数类型为NULL";elseecho $str;}echo getNull($str);
| 命名方式 | 应用场景 |
|---|---|
| 驼峰式 | $timePirce:变量,对象的属性和方法:getUser() |
| 蛇形 | set_public():函数 |
| 帕斯卡 | UserModel():类,与驼峰式很像,所以也叫”大驼峰“ |
| 全大写 | 常量 |
//默认是”值传递“$price1 = 4399;$price2 = $price1;printf("price1 = %d, price2 = %d",$price1,$price2);//打印 price1 = 4399, price2 = 4399$price1 = 5288;printf("price1 = %d, price2 = %d",$price1,$price2);//打印 price1 = 5288, price2 = 4399
//引用传递//引用赋值其实就是给原始变量起一个别名,并未创建新变量$price1 = 4399;$price2 = &$price1;printf("price1 = %d, price2 = %d",$price1,$price2);//打印 price1 = 4399, price2 = 4399$price1 = 5288;printf("price1 = %d, price2 = %d",$price1,$price2);//打印 price1 = 5288, price2 = 5288
| 预定义变量 | 说明 |
|---|---|
| 超全局变量 | 数组,任何地方都可以访问,不受作用域限制 |
| $GLOBALS | 引用全局作用域中可用的全部变量 |
| $_SERVER | 服务器和执行环境信息 |
| $_GET | 通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组 |
| $_POST | 当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本 |
| $_COOKIE | 通过 HTTP Cookies 方式传递给当前脚本的变量的数组 |
| $_SESSION | 当前脚本可用 SESSION 变量的数组 |
固定的值,一旦创建不可更新,不可删除,常量不是变量,前面不要加“$”,常量推荐全部大写,多个单词之间用下划线连接
//函数define("NAME","Tome");
//关键字const NATION = '中国';echo NATION;
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号