博客列表 >常量、双引号、索引数组与关联数组、分支控制的基本实现(0107php开发学习)

常量、双引号、索引数组与关联数组、分支控制的基本实现(0107php开发学习)

小辰
小辰原创
2020年01月10日 15:29:26794浏览

1. PHP中的常量

  • 常量是一种特殊的变量, 仅允许初始化一次, 不允许更新, 可以理解为只读变量
  • 常量没有作用域限制, 在编程的时候非常有用, 经常用来表示状态, 或数据共享
  • 常量不是变量, 不需要”$”, 但是常量名仍然要遵守PHP标识符的命名规范
  • 常量的创建:
    • 函数: define()
    • 指令: const
  • 相同:都可以定义常量
  • 不同之处: define()可以使用表达式来定义常量的值, 而const中能用字面量,类常量
    下面是我对常量创建的演示
    效果图
    代码
    1. <?php
    2. // 先用define和const定义常量
    3. define('MY_NAME', 'xiaocheng');
    4. const MY_class='0109';
    5. // 输出这两个常量
    6. echo MY_NAME , '<br>', MY_class, '<br>';
    7. // 下面比较不同之处
    8. class A
    9. {
    10. // const:可以创建类常量
    11. const NATION = 'CHINA';
    12. // define() 不能创建类常量,创建就会出错
    13. // define('USER_NAME', 'admin');
    14. }
    15. echo A::NATION, '<br>';
    16. // define()定义的常量允许使用表达式做为值,而const只能用字面量
    17. $domain = '@qq.com';
    18. define('MY_EMAIL', '1446582' . $domain);
    19. echo MY_EMAIL, '<br>';
    20. // const NEW_EMAIL = 'admin@' . $domain;
    21. const NEW_EMAIL = 'admin@php.cn';
    22. echo NEW_EMAIL, '<br>';

2. 单引号与双引号

  • 单引号: 内部的值,按字面量的形式进行处理
  • 双引号: 内部的值, 将被解析,如果值是变量名或者特殊字符,会被解析出来
    效果图
    代码
  1. <?php
  2. // 单引号与双引号
  3. $name = 'xiaocheng';
  4. echo '$name \t 单引号不解析内部的变量和特殊字符 <br>';
  5. echo "$name\t双引号可以解析内部变量和字符 <br>";
  6. // 在第一个$name前添加转入字符"\",可以使变量不被解析
  7. echo "\$name\t的值是\t$name <br>";
  8. echo "<hr>";
  9. // 如果想在单引号或双引号中引用自身, 也可以使用转义字符,这样单双引号就出来了
  10. echo '$name\t的值是\t\'$name\' <br>';
  11. echo "\$name\t的值是\t\"$name\" <br>";
  12. //两个反斜杠在字符串输出转义字符
  13. echo "\\$name", '<br>';
  14. echo '<hr>';
  15. // 双引号中的变量标识符,如果与其它字符串连接在一起会引起解析错误,去掉\t就会出现错误,效果中不显示错误的值
  16. echo "\$name\t的值是\t${name}hello <br>";
  17. echo "$name\t的值是\t$namehello <br>";

3. 数组的基本操作

创建数组

  • 字面量: 将多个数组元素放在一对中括号[]中, 多个元素之间用逗号分隔开
  • 逐个添加: 将每一个元素,通过赋值的方式, 直接添加/追加到数组中
  • $arr = [1,2,3,4];`
  • $arr = [0=>1,1=>2,2=>3,3=>4];`
  • 如果元素的键名是数值,则创建的是索引数组, 如果索引是连续的,键名可以省略
  • $stu = ['id'=>101, 'name'=>'小胖', 'course'=>'php']
  • 如果键名是字符串, 则创建的是关联数组,键名必须符合PHP标识符的命名规范
    效果图

    下面是我结合老师内容,自己理解并修改的代码,每个部分输出都有分割线
  1. <?php
  2. // 创建索引数组user1和user2,user3
  3. $users1[0] = 10;
  4. $users1[1] = 'admin';
  5. $users1[2] = 'admin@php.cn';
  6. $users2[] = 10;
  7. $users2[] = 'admin';
  8. $users2[] = 'admin@php.cn';
  9. $users2[] = 'php中文网';
  10. echo gettype($users2);
  11. $users3 = [20, 'jack', 'jack@php.cn'];
  12. // 获取单个数组信息
  13. // echo '<pre>' . print_r($users3, true) . '</pre>';
  14. // 一次性获取多个数组信息
  15. var_dump($users1, $users2, $users3);
  16. echo "<hr>";
  17. // 索引数组的访问与遍历
  18. foreach ($users3 as $item) {
  19. echo $item , '<br>';
  20. }
  21. echo "<hr>";
  22. // 字符串与数组的装换
  23. // 数组元素与变量之间的转换
  24. list($id, $name, $email) = $users3;
  25. // 将索引数组转为字符串: 拉平一个数组, 存储到数据表
  26. $str = implode(',', $users3);
  27. echo gettype($str), ' : ', $str, '<br>';
  28. // $sql = "INSERT `users` SET `comment` = ${str}";
  29. // 将一个字符串转换成索引数组
  30. $str = 'html=css=js=php=laravel';
  31. $arr = explode('=', $str);
  32. echo '<pre>' . print_r($arr, true) . '</pre>';
  33. echo "<hr>";
  34. // 关联数组的创建
  35. $products1['id'] = 100;
  36. $products1['name'] = '手机';
  37. $products1['price'] = 5000;
  38. echo '<pre>' . print_r($products1, true) . '</pre>';
  39. // 字面量方式创建
  40. $products2 = ['id'=>105, 'name'=> '电脑', 'price'=>9000];
  41. // 也用foreach()遍历,只输出键值
  42. foreach ($products2 as $value) {
  43. echo $value , '<br>';
  44. }
  45. // 输出键名,键值
  46. foreach ($products2 as $key=>$value) {
  47. echo "['$key'] => $value <br>";
  48. }
  49. echo "<hr>";
  50. // 关联数组与变量之间的转换
  51. extract($products2);
  52. echo "id=>$id, name=>$name, price=>$price <br>";
  53. echo "<hr>";
  54. // 变量转化成关联数组,变量的创建
  55. $dsn = 'mysql:host=localhost;dbname=php';
  56. $username = 'root';
  57. $password = 'root2';
  58. // 变量的转化,转换成关联数组
  59. $linkParams = compact('dsn', 'username', 'password');
  60. echo '<pre>' . print_r($linkParams, true) . '</pre>';
  61. echo "<hr>";
  62. // 将变量转化成索引数组
  63. function connect(...$linkParams)
  64. {
  65. // 返回的是索引数组
  66. print_r($linkParams);
  67. }
  68. connect($dsn, $username, $password);
  69. echo "<hr>";
  70. // 将关联数组转为索引数组
  71. $indexArr = array_values($products2);
  72. echo '<pre>' . print_r($products2, true) . '</pre>';
  73. echo '<pre>' . print_r($indexArr, true) . '</pre>';
  74. echo "<hr>";
  75. // 3. 多维数组
  76. // 数组元素, 除了可以是原始类型, 也可以还是一个数组, 这时就形成也多维数组
  77. // 从数据表中的读取的记录, php会转为二维数组, 日常开发, 二维数组用得最多
  78. $users = [
  79. ['id'=> 101, 'name'=> '小王', 'grade'=> 88],
  80. ['id'=> 102, 'name'=> '小张', 'grade'=> 78],
  81. ['id'=> 103, 'name'=> '小李', 'grade'=> 68],
  82. ];
  83. // 访问,得到结果小张
  84. echo $users[1]['name'], '<br>';
  85. // 遍历查询,输出users数组的内容
  86. foreach ($users as $user) {
  87. // print_r($user);echo '<br>';
  88. echo "id=>${user['id']}, name=>${user['name']}, price=>${user['grade']} <br>";
  89. }

4. 流程控制之分支

  • if: 单分支
  • if - else: 双分支
  • if - elseif - else: 多分支
  • switch - case - break: 多分支简化方案
    先来效果图
    代码如下
  1. <?php
  2. // 1 单分支
  3. // 购买数量
  4. $count = 11;
  5. // 单价
  6. $price = 99;
  7. // 金额
  8. $total = 0;
  9. // 折扣率
  10. $discount = 1;
  11. // 数量大于十件,小于二十件,打骨折
  12. if ($count >= 10 && $count < 20) {
  13. $discount = 0.01;
  14. }
  15. // 计算金额规则
  16. $total = $count * $price * $discount;
  17. echo "购买数量: $count, 总金额: $total, 折扣率: $discount <hr>";
  18. // 2. 双分支,多加了一个条件
  19. // $count = 16;
  20. $count = 3;
  21. // 数量大于十五件,小于二十件,打一折
  22. if ($count >= 15 && $count < 20) {
  23. $discount = 0.1;
  24. // 否则打九九折
  25. } else {
  26. $discount = 0.99;
  27. }
  28. // 计算金额规则,去掉这条的话,总金额会是上面的第一个total
  29. $total = $count * $price * $discount;
  30. echo "购买数量: $count, 总金额: $total, 折扣率: $discount <hr>";
  31. // 3. 多分支,三个及以上的判断
  32. // 我选了一个在最后才能判断的值
  33. $count=1.88;
  34. if ($count >= 10 && $count < 20) {
  35. $discount = 0.9;
  36. } elseif ($count >= 20 && $count < 30) {
  37. $discount = 0.8;
  38. } elseif ($count >= 30) {
  39. $discount = 0.7;
  40. } else {
  41. $discount = 1;
  42. }
  43. // 计算金额规则
  44. $total = $count * $price * $discount;
  45. echo "购买数量: $count, 总金额: $total, 折扣率: $discount <hr>";
  46. // 4. switch(), 简化多分支
  47. $count = 38;
  48. switch (true) {
  49. // 达成的条件
  50. case $count >= 10 && $count < 20:
  51. //达成条件后的折扣
  52. $discount = 0.9;
  53. break;
  54. case $count >= 20 && $count < 30:
  55. $discount = 0.8;
  56. break;
  57. case $count >= 30:
  58. $discount = 0.7;
  59. break;
  60. // 这些条件都没满足的判断
  61. default:
  62. $discount = 1;
  63. }
  64. $total = $count * $price * $discount;
  65. echo "购买数量: $count, 总金额: $total, 折扣率: $discount <hr>";
  66. // switch ()更多应用场景是单值判断
  67. $discount = 0.7;
  68. // 我觉得这种判断方式,适合比较简单的判断,比如在条件确定的情况下
  69. switch ($discount) {
  70. case 1:
  71. $total = $count * $price * 1;
  72. break;
  73. default:
  74. // echo '不支持的折扣率';
  75. // 程序中止
  76. exit('不支持的折扣率');
  77. }
  78. echo "购买数量: $count, 总金额: $total, 折扣率: $discount <hr>";

4.小结

做的时候比较迷茫,不知道怎样做好这次作业,最后我决定按照老师的案例来一步步做,相似度或许有点高,但是每条我都测试过效果,在代码的部分我加了一些自己的理解,希望老师理解。

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