Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:
<?php
//类型转换
//1.临时转换:用户参与操作
$n = 888;
var_dump($n,(string)$n,(float)$n);
echo '<br>';
var_dump((array)$n,((array)$n)[0]);
echo '<br>';
$str = 'php';
var_dump((object)$str,((object)$str)->scalar);
echo '<br>';
//2.自动转换:系统自动
echo 222 + '333';
echo '<br>';
echo 222 + 'abc12';
echo '<br>';
echo 222 + '12abc';
echo '<br>';
//3.强制转换:永久转换 只针对变量,字面量无效
$age = 30;
echo gettype($age),'<br>';
settype($age,'string');//永久转换
echo gettype($age),'<br>';
总结:
1. 数据类型转换分为:临时转换、自动转换、强制转换
2. 自动转换时如整数与字符串相加默认转换字符串为整数,如字符串包含数字和字母,字母在前,默认为0数据,忽略后面的数字;如数字在前,转换字符串数字忽略后面字母进行相加
3. 临时转换后,访问原来的变量会恢复原变量的数据类型;永久转换后,原来的变量类型改为转换后的变量类型
<?php
//类型检测
function sum($a,$b){
//is_numeric():检查参数是否是数值或数值型的字符串
if (is_numeric($a) && is_numeric($b)){
printf('%d+%d = %d<br>',$a,$b,($a+$b));
}else{
echo '参数类型错误<br>';
}
}
sum(1,'23');
sum(1,'ab');
//严格类型检测
function sum22($a,$b){
//is_numeric():检查参数是否是数值或数值型的字符串
if (is_int($a) && is_int($b)){
printf('%d+%d = %d<br>',$a,$b,($a+$b));
}else{
echo '参数类型错误<br>';
}
}
sum22(1,'23');
sum22(1,12.78);
//参数类型限定可以自动识别数值货数值型的字符串is_numeric()
function sum44(float $a,float $b) : string {
return $a.'+'.$b.'='.($a+$b);
}
echo sum44(1,'25').'<br>';
echo sum44(1,12.78).'<br>';
检测方式 | 函数 |
---|---|
标量 | is_int(),is_string(),is_bool(),is_scalar()… |
复合 | is_array(),is_object() |
特殊 | is_null(),is_resource() |
<?php
$userName = '百万弟弟';
$username = '在PHP中文网学习PHP';
echo $userName,',',$username,'<br>';
//1、驼峰式命名:$yangFan,变量,对象的属性和方法,getUser()
//2、蛇形:get_data(),函数
//3、帕斯卡:UserName,类,首字母大写,与驼峰式很像,所以也叫大驼峰
//4、全大写:常量
function hello($name){
return 'hello'.$name;
}
echo hello('PHP中文网'),'<br>';
echo HELLO('PHP中文网'),'<br>';
echo HellO('PHP中文网'),'<br>';
//值传递
$age = 38;
$age1 = $age;
printf('age = %d,age1 = %d<br>',$age,$age1);
$age = 30;
printf('age = %d,age1 = %d<br>',$age,$age1);
//引用传递 引用赋值 就是给原始变量起了个别名
$sex = 111;
$sex1 =& $sex;
printf('sex = %d,sex1 = %d<br>',$sex,$sex1);
$sex = 222;
printf('sex = %d,sex1 = %d<br>',$sex,$sex1);
//预定义变量 超全局变量:数组 任何地方都可以使用 不受作用域限制
// $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: 通过环境方式传递给当前脚本的变量的数组
echo '<hr>';
$name = '百万弟弟';
$age = 18;
printf('name = %s,age = %s<br>',$GLOBALS['name'],$GLOBALS['age']);
echo 'ip:'.$_SERVER['REMOTE_ADDR'].'<br>';
echo '浏览器:'.$_SERVER['HTTP_USER_AGENT'].'<br>';
echo '脚本绝对路径:'.$_SERVER['SCRIPT_FILENAME'].'<br>';
echo '脚本相对路径:'.$_SERVER['SCRIPT_NAME'].'<br>';
echo '当前脚本名称:'.$_SERVER['PHP_SELF'].'<br>';
//http://127.0.0.1/PHP14/20210126/demo3.php?name=yangfan&age=18
echo '查询字符串:'.$_SERVER['QUERY_STRING'].'<br>';
//http://127.0.0.1/PHP14/20210126/demo3.php/name/age/yangfan
echo 'PATH_INFO='.$_SERVER['PATH_INFO'].'<br>';
echo 'URI:'.$_SERVER['REQUEST_URI'].'<br>';
echo $_GET['name'];
<?php
//常量 是固定的值 创建不可更新和删除 const编译阶段 define运行阶段
//1、函数创建
define('NAME','百万弟弟');
//2、关键字
const AGE= 18;
printf('名字:%s,年龄:%s',NAME,AGE);
总结:
1.常量是固定的值,一单创建不可更新和删除
2. 常量需要全部大写,多个单词下划线连接,可全局访问
3. const编译阶段使用,define运行阶段使用
4. const只支持字面量,不支持表达式;define可以