博客列表 >《PHP数据类型转换与检测、变量常量的使用》

《PHP数据类型转换与检测、变量常量的使用》

杨凡的博客
杨凡的博客原创
2021年03月04日 18:06:36575浏览

数据类型的转换与检测技术

1、数据类型的转换

  1. <?php
  2. //类型转换
  3. //1.临时转换:用户参与操作
  4. $n = 888;
  5. var_dump($n,(string)$n,(float)$n);
  6. echo '<br>';
  7. var_dump((array)$n,((array)$n)[0]);
  8. echo '<br>';
  9. $str = 'php';
  10. var_dump((object)$str,((object)$str)->scalar);
  11. echo '<br>';
  12. //2.自动转换:系统自动
  13. echo 222 + '333';
  14. echo '<br>';
  15. echo 222 + 'abc12';
  16. echo '<br>';
  17. echo 222 + '12abc';
  18. echo '<br>';
  19. //3.强制转换:永久转换 只针对变量,字面量无效
  20. $age = 30;
  21. echo gettype($age),'<br>';
  22. settype($age,'string');//永久转换
  23. echo gettype($age),'<br>';

总结:
1. 数据类型转换分为:临时转换、自动转换、强制转换
2. 自动转换时如整数与字符串相加默认转换字符串为整数,如字符串包含数字和字母,字母在前,默认为0数据,忽略后面的数字;如数字在前,转换字符串数字忽略后面字母进行相加
3. 临时转换后,访问原来的变量会恢复原变量的数据类型;永久转换后,原来的变量类型改为转换后的变量类型

2、数据类型的检测

  1. <?php
  2. //类型检测
  3. function sum($a,$b){
  4. //is_numeric():检查参数是否是数值或数值型的字符串
  5. if (is_numeric($a) && is_numeric($b)){
  6. printf('%d+%d = %d<br>',$a,$b,($a+$b));
  7. }else{
  8. echo '参数类型错误<br>';
  9. }
  10. }
  11. sum(1,'23');
  12. sum(1,'ab');
  13. //严格类型检测
  14. function sum22($a,$b){
  15. //is_numeric():检查参数是否是数值或数值型的字符串
  16. if (is_int($a) && is_int($b)){
  17. printf('%d+%d = %d<br>',$a,$b,($a+$b));
  18. }else{
  19. echo '参数类型错误<br>';
  20. }
  21. }
  22. sum22(1,'23');
  23. sum22(1,12.78);
  24. //参数类型限定可以自动识别数值货数值型的字符串is_numeric()
  25. function sum44(float $a,float $b) : string {
  26. return $a.'+'.$b.'='.($a+$b);
  27. }
  28. echo sum44(1,'25').'<br>';
  29. echo sum44(1,12.78).'<br>';

检测方式 函数
标量 is_int(),is_string(),is_bool(),is_scalar()…
复合 is_array(),is_object()
特殊 is_null(),is_resource()

变量声明方式与使用

变量

  • 仅允许使用: 英文字母(a-z,A-Z),数字(0-9),下划线(_)或他们的组合
  • 不允许使用数字开头
  • 必须使用”$”美元符为前缀
  • 严格区分大小写
  • 驼峰命名法
  1. <?php
  2. $userName = '百万弟弟';
  3. $username = '在PHP中文网学习PHP';
  4. echo $userName,',',$username,'<br>';
  5. //1、驼峰式命名:$yangFan,变量,对象的属性和方法,getUser()
  6. //2、蛇形:get_data(),函数
  7. //3、帕斯卡:UserName,类,首字母大写,与驼峰式很像,所以也叫大驼峰
  8. //4、全大写:常量
  9. function hello($name){
  10. return 'hello'.$name;
  11. }
  12. echo hello('PHP中文网'),'<br>';
  13. echo HELLO('PHP中文网'),'<br>';
  14. echo HellO('PHP中文网'),'<br>';
  15. //值传递
  16. $age = 38;
  17. $age1 = $age;
  18. printf('age = %d,age1 = %d<br>',$age,$age1);
  19. $age = 30;
  20. printf('age = %d,age1 = %d<br>',$age,$age1);
  21. //引用传递 引用赋值 就是给原始变量起了个别名
  22. $sex = 111;
  23. $sex1 =& $sex;
  24. printf('sex = %d,sex1 = %d<br>',$sex,$sex1);
  25. $sex = 222;
  26. printf('sex = %d,sex1 = %d<br>',$sex,$sex1);
  27. //预定义变量 超全局变量:数组 任何地方都可以使用 不受作用域限制
  28. // $GLOBALS: 引用全局作用域中可用的全部变量
  29. // $_SERVER: 服务器和执行环境信息
  30. // $_GET :通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组
  31. // $_POST:当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本
  32. // $_FILES:通过 HTTP POST 方式上传到当前脚本的项目的数组
  33. // $_COOKIE:通过 HTTP Cookies 方式传递给当前脚本的变量的数组
  34. // $_SESSION:当前脚本可用 SESSION 变量的数组
  35. // $_REQUEST: 默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组
  36. // $_ENV: 通过环境方式传递给当前脚本的变量的数组
  37. echo '<hr>';
  38. $name = '百万弟弟';
  39. $age = 18;
  40. printf('name = %s,age = %s<br>',$GLOBALS['name'],$GLOBALS['age']);
  41. echo 'ip:'.$_SERVER['REMOTE_ADDR'].'<br>';
  42. echo '浏览器:'.$_SERVER['HTTP_USER_AGENT'].'<br>';
  43. echo '脚本绝对路径:'.$_SERVER['SCRIPT_FILENAME'].'<br>';
  44. echo '脚本相对路径:'.$_SERVER['SCRIPT_NAME'].'<br>';
  45. echo '当前脚本名称:'.$_SERVER['PHP_SELF'].'<br>';
  46. //http://127.0.0.1/PHP14/20210126/demo3.php?name=yangfan&age=18
  47. echo '查询字符串:'.$_SERVER['QUERY_STRING'].'<br>';
  48. //http://127.0.0.1/PHP14/20210126/demo3.php/name/age/yangfan
  49. echo 'PATH_INFO='.$_SERVER['PATH_INFO'].'<br>';
  50. echo 'URI:'.$_SERVER['REQUEST_URI'].'<br>';
  51. echo $_GET['name'];

常量

  1. <?php
  2. //常量 是固定的值 创建不可更新和删除 const编译阶段 define运行阶段
  3. //1、函数创建
  4. define('NAME','百万弟弟');
  5. //2、关键字
  6. const AGE= 18;
  7. printf('名字:%s,年龄:%s',NAME,AGE);

总结:
1.常量是固定的值,一单创建不可更新和删除
2. 常量需要全部大写,多个单词下划线连接,可全局访问
3. const编译阶段使用,define运行阶段使用
4. const只支持字面量,不支持表达式;define可以

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议