运算符:赋值、算术、比较、逻辑、三目、自操作,运算符优先级,分支结构:if、elseif、else、switch,循环结构:for、while、do-while,循环控制:break、continue,流程控制替代语法

一、赋值、算术、比较运算符

  1. 赋值运算符:=,将右边的结果保存到内存,再将地址赋值给左边的变量

    • 连贯赋值运算:$a = $b = 5;,从右往左进行赋值
    php中运算符共10种
  2. 算术运算:

    • +:加
    • -:减
    • *:乘
    • /:除
    • %:取余(模)
    • **:乘方
    除和取余运算第二个数不能为0
  3. 比较运算符:比较大小、内容是否相同,返回布尔类型,满足 => true,不满足 => false

    • >:大于
    • >=:大于等于
    • <:小于
    • <=:小于等于
    • ==:等于
    • !=:不等于
    • ===:全等于(对比数据类型)
    • !===:不全等于(对比数据类型)

二、逻辑运算符

  1. 逻辑运算符:对不同结果进行匹配

    • &&:与,两个都满足
    • ||:或,满足一个即可
    • :非,取反,针对一个结果
  2. 短路运算:

    • 逻辑与:第一个条件为false,则停止判断,结果为false
    • 逻辑或:第一个条件为true,则停止判断,结果为true
    尽量将决定性的条件放前面

三、连接、错误抑制、三目运算符

  1. 连接运算符:字符串拼接

    • .:将两个字符串连接起来
    • .=:将左边的内容与右边的内容连接起来,结果赋值给左边的变量

      $a .= $b;
      // 等价于
      $a = $a . $b;
  2. 错误抑制符:@,处理提前预知且不希望报错给用户的错误,尽量不要使用
  3. 三目运算符:三个表达式参与,简化的条件分支语句

    • 表达式1 ? 表达式2 : 表达式3:若表达式1为true,则执行表达式2,否则执行表达式3
    三目运算符可以嵌套

四、自操作运算符

  1. 自操作运算符:自己操作自己

    • ++:自增加1
    • --:自增减1
  2. 自操作符号位置:

    • 独立操作,没有其他运算:前置和后置效果一样
    • 有其他运算:

      • 前置:先自操作,结果参与运算
      • 后置:先运算,再自操作
  3. 衍生符号:类似自操作

    • +=
    • -=
    • *=
    • /=:右边表达式不能为0
    • %=:右边表达式不能为0
    • **=

五、计算机码,位运算符、运算符优先级

  1. 计算机码:计算机实际存储数据时,用的编码规则(二进制码)

    • 原码:数据本身从十进制转换成二进制得到的结果

      • 正数:左边第一位为0
      • 负数:左边第一位为1
    • 反码:针对负数,符号位不变,其他位取反
    • 补码:针对负数,反码加1
  2. 计算机中的0:

    • +0:00000000(原码和补码一样)
    • -0:

      • 原码:10000000
      • 反码:11111111
      • 补码:00000000
  3. 位运算:按计算机最小存储单位:位(bit)进行比较运算

    • &:按位与
    • |:按位或
    • ~:按位取反
    • ^:按位异或:同0异1
    • <<:整个(32位)按位左移,右边补0 => 乘以2
    • >>:整个(32位)按位右移,左边补符号位内容 => 除以2,会有小数
    $a = 5;
    $b = -5;
    /*
    5原码: 00000101
    -5原码: 10000101
      反码:11111010
      补码:11111011
    /*
    // 按位与
    var_dump($a & $b); // 输出:1
    /*
    5   00000101
    -5  11111011
    &   00000001
    转换:判断符号位:0-正数(原码),1-负数(补码)=》转码
    */

    注意:

    • 系统进行任何位运算,使用的都是补码
    • 位运算结束后,必须转换成原码才是最终要显示的数据
  4. 运算符优先级(从上往下优先级依次降低)
    php运算符优先级.png

六、分支结构-if分支

  1. 流程控制:代码执行的方向

    • 顺序结构:从上到下依次执行(基本)
    • 分支结构:根据条件执行某个分支代码

      • if
      • switch
    • 循环结构:在某个条件范围内,重复执行代码块

      • for
      • while
      • do-while:先执行依次
      • foreach:针对数据
  2. if分支:根据if后面条件,执行对应的代码块

    • 最简if:

      if(条件表达式){
       满足条件需要执行的代码块;
      }
    • 基础if

      if(条件表达式){
       满足条件需要执行的代码块;
      }else{
       不满足条件需要执行的代码块;
      }
    • 复杂if

      if(条件表达式1){
       满足条件表达式1需要执行的代码块;
      }elseif(条件表达式2){
       不满足条件表达式1,满足条件表达式2,需要执行的代码块;
      }else{
       都不满足时需要执行的代码块;
      }
    • if嵌套:支持多层嵌套

七、if分支实例

八、分支结构-switch分支

  1. switch:固定值匹配,基本语法:

    switch(条件表达式){
     // 逐个匹配
     case 值1:
         值1匹配上需要执行的代码块;
         break;
     case 值2:
         值2匹配上需要执行的代码块;
         break;
     default:
         匹配失败需要执行的代码块;
         break;
    }

九、for循环

  1. 基本语法:

    for(条件表达式1;调价表达式2;条件表达式3){
     // 条件表达式1:定义初始条件,执行一次,多个语句用 , 隔开
     // 条件表达式2:定义循环次数,满足条件执行循环体
     // 条件表达式3:执行条件变化
     循环体;
    }
  2. 特殊使用:3个条件表达式可以都为空,分号不能省略

    for(;;){ // 无限循环,一般情况不能这样写
     echo 'hello world';
    }

十、while和do-while循环

  1. while循环语法:

    条件初始化;
    while(条件表达式){
     循环体; // 判断条件在循环体中变化
    }
  2. for和while的选择:

    • 固定的已知条件(有规律的数值变化),用for循环
    • 灵活的条件判断,用while循环
  3. do-while循环语法:(至少执行一次循环体)

    条件初始化;
    do{
     循环体; // 判断条件在循环体中变化
    }while(条件表达式);

十一、循环控制

  1. 循环控制:在循环内部对循环本身进行控制

    • 中断控制:continue 层级n;,跳过n层循环,继续执行下一次循环
    • 终止控制:break 层级n;,终止n层循环,继续执行后面的代码

十二、流程控制替代语法

  1. for替代语法

    • 案例引入:

      <table border=1>
       <?php for($i=1;$i<10;$i++){?>
           <tr>
               <?php for($j=1;$j<$i;$j++)?><?php }?>
                   <td>
                       <?php echo $i.' * '.$j.' = '.$i*$j;?>
                   </td>
               <?php }?>
           </tr>
       <?php }?>
      </table>
    • 混写的时候大括号非常不美观,替代语法:

      • for(;;){ => for(;;):
      • } => endfor; // 分号可以不写
  2. 替代语法通用格式

    • {:
    • }

      • ifendif;
      • switchendswitch;
      • forendfor;
      • whileendwhile;
      • foreachendforeach;

标签: none

评论已关闭