Blogger Information
Blog 64
fans 2
comment 1
visits 46864
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数据类型的转换、变量与常量声明和使用
Y的博客
Original
735 people have browsed it

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);
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