博客列表 >数据类型的转换、变量与常量声明和使用

数据类型的转换、变量与常量声明和使用

Y的博客
Y的博客原创
2021年01月30日 21:56:30738浏览

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

数据类型的转换

  1. <?php
  2. // 类型转换
  3. // 1. 临时转换: 用户
  4. // http://by.io/012601/demo1.php?id=3
  5. $id = $_GET['id'];
  6. var_dump($id);
  7. echo '<br>';
  8. // id应该是整数才方便运算
  9. // url中的内容全部默认是字符串
  10. $id = (int)$id;
  11. if($id===3){
  12. echo '数据存在';
  13. };
  14. echo '<br>';
  15. $n = 123;
  16. var_dump($n,(string)$n,(float)$n);
  17. echo '<hr>';
  18. var_dump((array)$n,((array)$n)[0]);
  19. $srt = 'php';
  20. //字符串转数组的意义不大
  21. echo $str[0],$str[1],$str[2],'<br>';
  22. var_dump((object)$str,((object)$str)->scalar);
  23. var_dump($str);
  24. echo '<br>';
  25. // 2. 自动转换: 系统
  26. //每一种操作符,它要求的操作数类型是固定的,如果不满足就自动转换
  27. echo 222 + "333";
  28. echo '<br>';
  29. //"+"要求参与计算的数据都是数值类型,如果不是,就是会触发自动转换
  30. echo 222+ (int)'111';
  31. echo '<br>';
  32. echo 123 + 'php111';
  33. echo '<br>';
  34. echo (int)'php111';
  35. echo '<br>';
  36. echo 123 + (int)'php111';
  37. echo '<br>';
  38. //".",希望两边都是字符串,如果不是就转换
  39. echo 'php' . 123 . '<br>';
  40. //等价于
  41. echo 'php' . (string)123 . '<br>';
  42. // 最常用的是布尔转换
  43. if (!$email) echo '没定义邮箱';
  44. var_dump($email);
  45. echo var_export((bool)null);
  46. echo '<hr>';
  47. if (!isset($email)) echo '没定义邮箱';
  48. // 3. 永久转换: 只针对变量
  49. $price = 111;
  50. echo gettype($price),'<br>';
  51. echo gettype((string)$price),'<br>';
  52. echo gettype($price),'<br>';
  53. //永久转换
  54. settype($price,'string');
  55. echo gettype($price),'<br>';

类型检测

  1. <?php
  2. //类型检测
  3. function sum1($a, $b)
  4. {
  5. printf('%d + %d = %d<br>', $a, $b, ($a + $b));
  6. }
  7. sum1(11, 22);
  8. // sum1('php','cn');
  9. function sum2($a, $b)
  10. {
  11. // is_numeric():检查参数是否是数值或数值型的字符串
  12. // 123, "123"都是有效的数据
  13. if (is_numeric($a) && is_numeric($b))
  14. printf('%d + %d = %d<br>', $a, $b, ($a + $b));
  15. else echo '参数类型错误';
  16. }
  17. sum2(22,33);
  18. sum2('php','cn');
  19. echo '<br>';
  20. sum2(1,'111');
  21. function sum3 ($a,$b)
  22. {
  23. if (is_int($a) && is_int($b))
  24. printf('%d + %d = %d<br>', $a, $b, ($a + $b));
  25. else echo '参数类型错误';
  26. }
  27. sum3(11,'22');
  28. echo '<br>';
  29. sum3(11,22);
  30. sum3(11.1,22.2);
  31. echo '<hr>';
  32. // php7+: 参数类型检测,支持复合类型,也支持标量
  33. function sum4(float $a,float $b) : string
  34. {
  35. // 参数类型限定可以自动识别数值或数值型的字符串, is_numeric()
  36. // return sprintf('%d + %d = %d<br>', $a, $b, ($a + $b));
  37. return $a . ' + ' . $b . ' = ' . ($a + $b). '<br>';
  38. }
  39. echo sum4(11, "22");
  40. echo sum4(11.11, 22.22);
  41. echo '<hr>';
  42. // is_scalar(): 检测变量类型是否是标量
  43. var_export(is_scalar(1));
  44. echo '<br>';
  45. var_export(is_scalar(new class{}));
  46. echo '<br>';
  47. var_export(is_scalar([]));
  48. echo '<br>';
  49. // null 不是标量
  50. var_export(is_scalar(null));
  51. // 函数/闭包/回调
  52. echo '<br>';
  53. var_export(is_scalar(function(){}));

2. 变量声明与常量声明的方式与使用

变量声明

  1. <?php
  2. // 1. 变量声明
  3. // 变量必须要用"$"为前缀: $name
  4. // 严格区分大小写
  5. $userName = '小明';
  6. $password = 123;
  7. echo '账户名:'.$userName, ',','密码:'.$password,'<br>';
  8. $_ = 1;
  9. $a1 = 2;
  10. $_1 = 3;
  11. var_dump($_, $a1, $_1);
  12. echo '<hr>';
  13. // 1. 驼峰式: $itemPrice,变量,对象的属性和方法, getUser()
  14. // 2. 蛇形: set_public(),函数
  15. // 3. 帕斯卡: UserModel, 类,与驼峰式很像,所以也叫: 大驼峰
  16. // 4. 全大写: 常量
  17. // 函数不区分大小写
  18. function hello($name)
  19. {
  20. return 'Hello ' . $name;
  21. }
  22. echo hello('小明'),'<br>';
  23. echo HELLO('小红'),'<br>';
  24. // 2. 变量赋值
  25. $color = 'red';
  26. echo gettype($color),'<br>';
  27. $url = 'site';
  28. $$url = 'php中文网';
  29. // $$url: 可变变量,变量标识符来自另外一个变量
  30. echo $url . ' => ' . $$url . '<br>';
  31. echo $url . ' => ' . $site . '<br>';
  32. // 默认是"值传递"
  33. $price1 = 111;
  34. $price2 = $price1;
  35. printf('price1 = %d, price2 = %d<br>', $price1, $price2);
  36. $price1 = 222;
  37. printf('price1 = %d, price2 = %d<br>', $price1, $price2);
  38. echo '<hr>';
  39. // 引用赋值
  40. $price1 = 333;
  41. // $price2 =& $price1;
  42. $price2 = &$price1;
  43. // 引用赋值其实就是给原始变量起一个别名,并未创建新变量
  44. printf('price1 = %d, price2 = %d<br>', $price1, $price2);
  45. $price1 = 444;
  46. printf('price1 = %d, price2 = %d<br>', $price1, $price2);
  47. // 3. 预定义变量
  48. // 超全局变量: 数组,任何地方都可以访问,不受作用域限制
  49. // $GLOBALS: 引用全局作用域中可用的全部变量
  50. // $_SERVER: 服务器和执行环境信息
  51. // $_GET :通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组
  52. // $_POST:当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本
  53. // $_FILES:通过 HTTP POST 方式上传到当前脚本的项目的数组
  54. // $_COOKIE:通过 HTTP Cookies 方式传递给当前脚本的变量的数组
  55. // $_SESSION:当前脚本可用 SESSION 变量的数组
  56. // $_REQUEST: 默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组
  57. // $_ENV: 通过环境方式传递给当前脚本的变量的数组
  58. // $GLOBALS
  59. $name = '小明';
  60. $email = 'xm@php.cn';
  61. printf('name = %s, email = %s<br>', $name, $email);
  62. printf('name = %s, email = %s<br>', $GLOBALS['name'], $GLOBALS['email']);
  63. echo 'IP: '. $_SERVER['REMOTE_ADDR']. '<br>';
  64. echo '浏览器: '. $_SERVER['HTTP_USER_AGENT']. '<br>';
  65. echo '脚本绝对路径 = '. $_SERVER['SCRIPT_FILENAME']. '<br>';
  66. echo '脚本相对路径 = '. $_SERVER['SCRIPT_NAME']. '<br>';
  67. echo '当前脚本名称 = '. $_SERVER['PHP_SELF']. '<br>';
  68. // http://by.io/012601/demo3.php?id=1&name=admin
  69. // id=1&name=admin 查询字符串,给GET请求用
  70. echo '查询字符串 : '. $_SERVER['QUERY_STRING']. '<br>';
  71. // http://by.io/012601/demo3.php?id=1&name=admin
  72. // http://by.io/012601/demo3.php?id=1&name=admin
  73. // /id/5/name/xm: path_info
  74. echo 'PATH_INFO = '. $_SERVER['PATH_INFO']. '<br>';
  75. echo 'URI: ' . $_SERVER['REQUEST_URI'], '<br>';
  76. echo $_GET['id'];

常量声明

  1. <?php
  2. // 常量
  3. // 是固定的值,一旦创建不可更新,不可删除
  4. // 常量不是变量,前面不要加" $ "
  5. // 常量推荐全部大写,多个单词之间用下划线连接
  6. // 1.函数
  7. define('NAME', '小明');
  8. // 2. 关键字
  9. const SEX = '男';
  10. printf('姓名: %s, 性别: %s<br>', NAME, SEX);
  11. function a() {
  12. define('ID', 123);
  13. // const A = 1;
  14. }
  15. a();
  16. echo ID;
  17. if (true) {
  18. define('NAME', '小明');
  19. }
  20. echo NAME;
  21. echo '<br>';
  22. // const 只支持字面量,不允许表达式
  23. define('B', '我是' . NAME);
  24. echo B, '<br>';
  25. define('ARR1', [1,2,3]);
  26. print_r(ARR1);
  27. const ARR2 = [1,2,3];
  28. print_r(ARR2);
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议