博客列表 >210427 PHP 运算符 流程控制 字符串定义 定界符 require/include区别

210427 PHP 运算符 流程控制 字符串定义 定界符 require/include区别

xyphpblog
xyphpblog原创
2021年05月10日 10:11:11697浏览

1. 运算符

1.1 算数运算符

  • $a+$b
  • $a-$b
  • $a*$b
  • $a/$b
  • $a%$b
    • 取a/b的余数
  • $a++
    • 先返回$a的值再+1
  • ++$a
    • $a的值先+1 再返回$a
  • $a- -
    • 先返回$a的值再-1
  • - -$a
    • $a的值先-1 再返回$a
  • 2**4
    • 2的4次方,需PHP5.6以上版本
  1. <?php
  2. $a = 20;
  3. $b = 6;
  4. echo "\$a+\$b=".($a+$b)."<br>";
  5. echo "\$a-\$b=".($a-$b)."<br>";
  6. echo "\$a*\$b=".($a*$b)."<br>";
  7. echo "\$a/\$b=".($a/$b)."<br>";
  8. echo "\$a%\$b=".($a%$b)."<br>";
  9. // 26
  10. // 14
  11. // 120
  12. // 3.3333333333333
  13. // 2
  14. echo "\$a++=".$a++."<br>";
  15. echo "++\$a=".++$a."<br>";
  16. echo "\$a--=".$a--."<br>";
  17. echo "--\$a=".--$a."<br>";
  18. // $a++=20
  19. // ++$a=22
  20. // $a--=22
  21. // --$a=20
  22. echo $a**3;
  23. //8000

1.2 比较运算符

  • >
  • <
  • =
    • 赋值运算符
  • ==
    • 比较值,不比较类型
  • ===
    • 比较值,也比较类型
  1. var_dump(99=="99");
  2. // bool(true)
  3. var_dump(99==="99");
  4. // bool(false)
  5. var_dump(99===99);
  6. // bool(true)

1.3 太空船运算符

  • <=>
  • 比较左右两边的数
  • 左>右返回1
  • 左<右返回-1
  • 左=右返回0
  1. var_dump(1<=>99);
  2. var_dump(99<=>1);
  3. var_dump(99<=>99);
  4. // int(-1)
  5. // int(1)
  6. // int(0)

1.4 逻辑运算符

  • &&
    • and
  • ||
    • or
  • !
    • 取反

1.5 三元运算符

  • 相当于 true/false ? if true value 1 : if false value 2
  • 也可写成 $a=$b?:$c
  • PHP7 以后可以写成 $a=$b??$c
  1. $pwd = sha1("abcdefg");
  2. $pwd = isset($pwd)? $pwd:'root';
  3. echo $pwd;
  4. echo "<hr>";
  5. $page = $_GET['p'];
  6. $page = isset($_GET['p'])?$_GET['p']:1;
  7. echo $page;
  8. echo "<hr>";
  9. # 也可写作
  10. $page = $_GET['p']?:1;
  11. echo $page;
  12. echo "<hr>";
  13. #PHP7 以后,可以写作
  14. $page = $_GET['p']??1;
  15. echo $page;

2. 流程控制

2.1 条件分支

2.1.1 单个分支 if

  1. # 1. 单条件分支
  2. if (true) {
  3. echo "hello";
  4. }
  5. # 模板语法简写1:
  6. if (true) echo "hi";
  7. # 模板语法简写2:
  8. if (true):
  9. echo "hi";
  10. endif;

2.1.2 双分支 if…else

  1. <?php
  2. # 2. 双向条件分支
  3. if (true) {
  4. echo "hehe";
  5. } else {
  6. echo "haha";
  7. }
  8. #模板语法
  9. if(false) echo 5;
  10. else echo 6;
  11. if (false) :
  12. echo 1;
  13. else :
  14. echo 2;
  15. endif;
  16. # 可用于混编
  17. if(true):?>
  18. <strong>hehehe<strong/>
  19. <?else:?>
  20. <em>haha</em>
  21. <?endif?>

2.1.3 多分支

2.1.3.1 if…elseif…else

  1. $age = 18;
  2. $gender = "male";
  3. if ($age<20&&$gender==="male") :
  4. echo "boy";
  5. elseif($age>=20&&$gender==="male"):
  6. echo "man";
  7. elseif($age<20&&$gender==="female"):
  8. echo "girl";
  9. elseif($age>=20&&$gender==="female"):
  10. echo "woman";
  11. else:
  12. echo "hehe";
  13. endif;

2.1.3.2 switch

  1. $d = date("w");
  2. switch ((int)$d) {
  3. case '1':
  4. echo "Mon";
  5. break;
  6. case '2':
  7. echo "Tue";
  8. default:
  9. echo "???";
  10. break;
  11. }
  12. #switch 模板语法
  13. switch ((int)$d) :
  14. case '1':
  15. echo "Mon";
  16. break;
  17. case '2':
  18. echo "Tue";
  19. default:
  20. echo "???";
  21. break;
  22. endswitch;

2.2 循环

2.2.1 while

  1. $numbers = [1,2,3,4,5,6,7];
  2. while ($num = current($numbers)) {
  3. echo $num,"<br>";
  4. next($numbers);
  5. }
  6. reset($numbers);
  7. # while 模板语法
  8. while ($num = current($numbers)) :
  9. echo $num,"<br>";
  10. next($numbers);
  11. endwhile;

2.2.2 do…while

  1. reset($numbers);
  2. $num = current($numbers);
  3. do {
  4. echo $num,"<br>";
  5. next($numbers);
  6. } while ($num = current($numbers));

2.2.3 for

  1. for ($i=0; $i < count($numbers); $i++) {
  2. echo $numbers[$i];
  3. }

2.2.4 foreach

  1. foreach($numbers as $key => $value){
  2. echo $numbers[$key]; //=$value
  3. }

2.3 break和continue

2.3.1 break

  • 提前结束循环 拦截输出
  1. for ($i=0; $i < count($numbers); $i++) {
  2. if($i>3) break;
  3. echo $numbers[$i];
  4. }

2.3.2 continue

  • 跳过一些元素 选择性输出
  1. for ($i=0; $i < count($numbers); $i++) {
  2. if($i==3 || $i==4) continue;
  3. echo $numbers[$i];
  4. }

3. 字符串定义

3.1 单引号,双引号

  • ‘’ 单引号不能解析变量,不能解析转义字符如\n,\t,\r
  • “” 双引号能解析变量,能解析转义字符如\n,\t,\r(源代码或terminal中可以看出)
  • nl2br() 使\n有效显示在浏览器中
  1. echo __DIR__.'\demo1.php';
  2. echo "<pre>1\t2\n3\r4<pre>";
  3. // 1 2
  4. // 3
  5. // 4
  6. $item = "drink";
  7. echo "I would like some $item";
  8. //I would like some drink
  9. echo "I would like some {$item}s";
  10. //I would like some drinks
  1. echo nl2br("I\nam\nsleeping.\n");
  2. // I
  3. // am
  4. // sleeping.

3.2 定界符

  • 能解析转义符 \n \t \r
  • 适合输出大量,多行,内部有变量的HTML代码
  1. $item = "drink";
  2. $item2 = "burger";
  3. echo <<<EOF
  4. <table style="border:1px solid;">
  5. <tr>
  6. <th>Header</th>
  7. </tr>
  8. <tr>
  9. <td>{$item} 1, {$item2} 1</td>
  10. </tr>
  11. <tr>
  12. <td>{$item} 2, {$item2} 2</td>
  13. </tr>
  14. </table>
  15. EOF;

  1. echo <<<eof
  2. <table border="1" cellspacing="0" width=150 height=150 >
  3. <tbody align="center">
  4. <tr>
  5. <td bgcolor="lightblue">1</td>
  6. <td bgcolor="lightgrey">2</td>
  7. <td bgcolor="lightyellow">3</td>
  8. </tr>
  9. <tr>
  10. <td bgcolor="lightgreen">4</td>
  11. <td bgcolor="lightpink">5</td>
  12. <td bgcolor="orange">6</td>
  13. </tr>
  14. <tr>
  15. <td bgcolor="yellow">7</td>
  16. <td bgcolor="green">8</td>
  17. <td bgcolor="bisque">9</td>
  18. </tr>
  19. </tbody>
  20. </table>
  21. eof;

4. require/include区别

  • include 后面的代码还可以执行
  • require 出现错误后面代码不执行
  • 常用于config文件,如数据库连接

5. 简单计算器

  1. <?php
  2. echo <<<eof
  3. <form action="" method="get">
  4. <input type="number" required name="num1">
  5. <select name="op">
  6. <option value="+" selected>+</option>
  7. <option value="-">-</option>
  8. <option value="*">*</option>
  9. <option value="/">/</option>
  10. <option value="%">%</option>
  11. </select>
  12. <input type="number" required name="num2">
  13. <button type="submit">=</button>
  14. </form>
  15. eof;
  16. $num1 = int)$_GET["num1"];
  17. $num2 = (int)$_GET["num2"];
  18. $op = $_GET["op"];
  19. $sum;
  20. switch ($op) {
  21. case '+':
  22. $sum = $num1 + $num2;
  23. break;
  24. case '-':
  25. $sum = $num1 - $num2;
  26. break;
  27. case '*':
  28. $sum = $num1 * $num2;
  29. break;
  30. case '/':
  31. if ($num2 == 0) $num2 = null;
  32. else $sum = $num1 / $num2;
  33. break;
  34. case '%':
  35. if ($num2 == 0) $num2 = null;
  36. else $sum = $num1 % $num2;
  37. break;
  38. default:
  39. $sum = $num1 + $num2;
  40. break;
  41. }
  42. echo $num2 == null ? "error at the second number, divisor cannot be zero" : "$num1 $op $num2 = $sum";
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议