Blogger Information
Blog 26
fans 0
comment 2
visits 35118
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
常量、双引号、索引数组与关联数组、分支控制的基本实现(0107php开发学习)
小辰
Original
793 people have browsed it

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.小结

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

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