zoukankan      html  css  js  c++  java
  • 前端PHP入门-006-表达式和运算符

    算术运算

    概念

    算数运算符,就是大家小学所学绝大多数知识:

    符号 描述 示例
    + 加号 x+y
    - 减号 xy
    * 乘号 xy
    / 除号 x/y
    % 取余 xy

    代码实验室

    太简单,快速看一下就行

    1. <?php
    2. $x = 10;
    3. $y = 20;
    4. //10+20为30
    5. echo $x + $y;
    6. ?>
    1. <?php
    2. $x = 20;
    3. $y = 10;
    4. //20 -10 为10
    5. echo $x - $y;
    6. ?>
    1. <?php
    2. $x = 20;
    3. $y = 10;
    4. //20乘以10结果为200
    5. echo $x * $y;
    6. ?>
    1. <?php
    2. $x = 20;
    3. $y = 10;
    4. //20除以10结果为2
    5. echo $x / $y;
    6. ?>
    1. <?php
    2. $x = 10;
    3. $y = 3;
    4. //$x 不能整除3,得到的余数为1,所以结果输出为1
    5. echo $x % $y;
    6. ?>

    与我们数学所学一样,也有优先级:先乘除,后加减。如果你想更明确的改变优先级,那就用()【小括号】,将想要优先的值给括起来。


    赋值运算

    概念

    赋值运算,我们已经学过了。

    我们在数学里面把 = (一个等号)叫作赋值运算符,即:把等号右边的值,赋值给等号左边的变量,左边的变量就为右边的值。

    代码是从上到下运行的,因此赋值就可以从上至下的重复赋值:

    1. <?php
    2. $x = 5;
    3. $x = true;
    4. $x = '爱你';
    5. $x = 12.888;
    6. echo $x;
    7. ?>

    那么PHP的赋值运算符还有几个:

    符号 举例 等价于
    += x+y xx + $y
    -= xy xx - $y
    *= xy xx * $y
    /= x/y xx / $y
    %= xy xx % $y
    .= x.y xx . $y

    代码

    1. <?php
    2. $x = 5;
    3. $y = 8;
    4. $x += $y;
    5. echo $x;
    6. ?>

    其实这个没有什么可说的!


    # 自加、自减运算

    概念

    自加自减,就是把自己加1,或者减1。
    如果你学习过其他编程语言。你会发现,此处的用法又是计算机里面的一个规定。可以这样用,用起来更加简洁。

    符号 说明
    $x++ 先赋值后加
    $x– 先赋值后减
    ++$x 先加后赋值
    –$x 先减后赋值

    代码

    1. <?php
    2. $x = 5;
    3. //先赋值后加:即先将$x的值赋值给$y。$x的值为5,所以将$x的值赋值给$y。$y也为5
    4. $y = $x++;
    5. //$x的结果输出为6,因为赋值给$y后,$x自己又把自己进行了+1操作。所以,$x的结果为6
    6. echo $x;
    7. ?>

    比较一下

    1. <?php
    2. $x = 5;
    3. //先将$x自加1,$x等于5,自加1后结果为6。因此,$y的结果为6
    4. //自加后,再将结果6偷偷的赋值给自己$x
    5. $y = ++$x;
    6. //$x的结果输出也为6。因为$x执行+1完成后,将5+1的结果赋值给了自己
    7. echo $x;
    8. ?>

    你再做实验,试试xx的结果是这样吗?

    请回答,下面water+paper的结果为多少?

    1. <?php
    2. $x = 5;
    3. $y = 6;
    4. $foo = $x++ + $x--;
    5. $bar = ++$y + ++$x;
    6. $cup = $x-- + $y--;
    7. $paper = ++$x + $x++;
    8. $water = $y-- + $x--;
    9. echo $water + $paper;
    10. ?>

    # 比价运算符
    ## 概念

    说明 符号
    大于 >
    小于 <
    大于等于
    =
    小于等于 <=
    不等于 != (不等的另外一种写法<>)
    等于 ==
    全等(判断类型等于) ===
    全不等(判断类型不等于) !==

    这个感觉也没有什么可说的

    代码

    1. <?php
    2. $x = 5;
    3. $y = 6;
    4. //因为5大于6不成立,所以为错的。即为false执行了假区间
    5. if($x > $y){
    6. //真区间
    7. echo '变量x 大于 变量y,成立';
    8. }else{
    9. //假区间
    10. echo '变量x 大于 变量y,不成立';
    11. }
    12. ?>

    重点是演示,等于(==)和全等于也叫判断类型等于(===)

    1. <?php
    2. $x = 5;
    3. $y = '5';
    4. if($x == $y){
    5. echo '结果为真';
    6. }else{
    7. echo '结果为假';
    8. }
    9. ?>

    比较一下

    1. <?php
    2. $x = 5;
    3. $y = '5';
    4. if($x === $y){
    5. echo '结果为真';
    6. }else{
    7. echo '结果为假';
    8. }
    9. ?>

    # 逻辑运算

    逻辑思维能力,相当于物理电路中的开关的串行和并行

    概念

    下面表格中的:xy 为条件二。进行说明:

    1. 逻辑与,中文解释为并且。可理解为,xy 都为真(true)的时候执行。

    2. 逻辑或,中文解释为或者。可以理解为,xy其中一个为真(true)的时候执行。

    3. 逻辑非,中文解释取反。如果$x的执为假(false),进行一次非操作。非假(false)就为真了,就可以执行真区间了。反推true,则执行假区间了。

    4. 逻辑异或,如果xy相同则为false,不相同则为true。

    举例 说明 详细说明
    xandy 逻辑与(并且关系) xy 为真则返回真
    $x && $y 同上 同上
    xory 逻辑或 x,y均为false时为假,其他情况全为真
    $x ‖ $y 同上 同上
    !$x 逻辑非 取反,即true变为false,false变为true
    $x xor $y 逻辑异或 相同取false,相异为true

    代码

    • 逻辑与
    1. <?php
    2. $x = true;
    3. $y = false;
    4. //逻辑与(并且),要求两个都为true才执行真区间,所以代码中执行假区间
    5. if($x && $y){
    6. echo '执行了真区间';
    7. }else{
    8. echo '执行了假区间';
    9. }
    10. ?>
    • 逻辑或
    1. <?php
    2. $foo = false;
    3. $bar = true;
    4. //逻辑或,有一个为真则为真
    5. if($foo || $bar){
    6. echo '执行真区间';
    7. }else{
    8. echo '执行假区间';
    9. }
    10. ?
    11. ```
    12. + 逻辑非
    13. ```php
    14. <?php
    15. $foo = false;
    16. //逻辑非,把false变为了true
    17. if(!$foo){
    18. echo '执行真区间';
    19. }else{
    20. echo '执行假区间';
    21. }
    22. ?>

    【重点知识】短路

    短路就是采用一个懒人模式来思考问题。

    逻辑与的特性是:两边为true即为true,其他情况均为假。
    逻辑或的特性是:两边为假均为假,其他情况全为真。

    我们现在把自己想象成一个懒汉,非常非常懒。来思考逻辑与和逻辑或。可不可以这样理解:
    逻辑与:如果前面第一个条件为false了,后面就可以不用执行了。

    用代码表示:if(x &&y) 如果xfalsey 就没有执行必要了。

    逻辑或:前面第一个条件为true了,后面就不用执行了。

    用代码表示:if(x||y) 如果xtruey 就没有执行必要了。

    我们写段代码来证明一下:

    1. <?php
    2. $x = false;
    3. $y = 2;
    4. if($x && $y++){
    5. echo '真';
    6. }else{
    7. echo '假';
    8. }
    9. //结果还为2,说明没有执行$y++
    10. echo $y;
    11. ?>

    代码如下,将两个&符改为一个&符试试:

    1. <?php
    2. $x = false;
    3. $y = 2;
    4. if($x & $y++){
    5. echo '真';
    6. }else{
    7. echo '假';
    8. }
    9. //再看看结果
    10. echo $y;
    11. ?>

    我们来看看短路的逻辑或:

    1. <?php
    2. $x = true;
    3. $y = 2;
    4. if($x || $y++){
    5. echo '真';
    6. }else{
    7. echo '假';
    8. }
    9. //结果,因为$x已经为true了,肯定执行真区间没有必要执行$y++了
    10. echo $y;
    11. ?>

    改成一个 | 再看看执行结果

    1. <?php
    2. $x = true;
    3. $y = 2;
    4. if($x | $y++){
    5. echo '真';
    6. }else{
    7. echo '假';
    8. }
    9. //自己运行对比结果
    10. echo $y;
    11. ?>

    典型的短路应用的代码

    1. <?php
    2. //如果为defined('AUTH')存在AUTH常量则为true,不访问后面的exit了。如果为false则执行exit
    3. defined('AUTH') or exit('存在安全因素不准访问');
    4. ?>

    exit 的意思是指在此处停止运行,退出。后面的PHP代码不再执行了。它有两种用法:
    1.直接exit; 就是直接退出
    2.exit(‘提示内容’),退出的时候还给出一段提示内容


    # 位运算

    俱往昔,用二进制很少,还是自己本身没有那么厉害,俺不是科班出身
    等以后用到位运算的时候,再来学习吧。

    举例 说明 详细说明
    a &b and(按位与) 将把 ab 中都为 1 的位设为 1
    $a | $b Or(按位或) 将把 ab 中任何一个为 1 的位设为 1。
    a ^b xor(按位异或) 将把 ab 中一个为 1 另一个为 0 的位设为 1。
    ~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。
    a<<b 左移 ab 次(每一次移动都表示“乘以 2”)。
    a>>b 右移 ab 次(每一次移动都表示“除以 2”)。

    均为二进制的运算
    简单了解一下就行:

    1. <?php
    2. //$x二进制值为:
    3. $x = 5;
    4. //$y二进制值为:
    5. $y = 8;
    6. //结果为13
    7. echo $x ^ $y;
    8. ?>
    变量 二进制值
    $x 0101
    $y 1000
    异或结果 1101

    异或解释:如果x,y两个值不相同,则异或结果为1。如果x,y两个值相同,异或结果为0。


    # 运算符优先级
    因为绝大多数人都不会去记运算符的优先级。

    我们在小学的时候,优先级是先乘除后加减。想要改变运算的优先级加括号即可。

    重点:不用记优先级,确定不了的时候号上括号把优先级标出来即可


    # 三元运算符和其它运算符

    概念

    符号 说明
    $x? 真代码段:假代码段 判断是否为真假 ? 真情况 : 假情况;
    ``(反引号) 反引号中间插代命令,执行系统命令,等价于shell_exec函数
    @ 单行抑制错误,把这一行的错误不让它显示出来了,效率低不建议使用
    => 数组下标访问符
    -> 对象访问符
    instanceof 判断某个对象是否来自某个类,如果是的返回true,如果不是返回false

    怎么说呢?很重要,但是对于web前端的各位学生又不是那么重要,但是你必须要做到熟悉或者掌握程度

    三元运算符,相当于是if…else结构。不过三元运算符的写法更加简洁,语法格式如下:

    $x? 真代码段(只能写一句代码):假代码段(只能写一句代码);

    1. <?php
    2. $x = true;
    3. $x ? $y = 5 : $y = 6;
    4. //输出5
    5. echo $y;
    6. ?>

    反引号就更加特殊了,我们经常需要显示IP地址,在PHP里面可不可能显示我们windows的IP地址呢?用反引号,就可以执行我们的命令(不过有些虚拟服务器是禁止执行这些的命令脚本的):

    1. <?php
    2. echo '<pre>';
    3. echo `ipconfig`;
    4. echo '</pre>';
    5. ?>

    上面的代码你执行看看效果,是不是显示出来了你机器的IP地址和一堆和IP相关的参数?

    @符是指单行抑制错误,以后的章节我们还会讲解到。了解即可

    1. <?php
    2. //打开一个不存在的文件 pangsir.txt,你运行一下会发现报错了。
    3. //再前面再加上一个@符看看效果
    4. $fp = fopen('pangsir.txt','r');
    5. //@$fp = fopen('pangsir.txt','r');
    6. ?>

    数组下标访问符,以后也会有一章讲解,此处了解一下就可以了:

    1. <?php
    2. $data = array('sina' =>'新浪' ,'sohu' => '搜狐');
    3. ?>

    对象访问符->和instanceof 都是了解级别

    1. <?php
    2. //实例化一个对象
    3. $obj = new StdClass();
    4. //判断某对象是某由某个类实例化,如果是的则执行真
    5. if($obj instanceof stdClass){
    6. echo '真';
    7. }else{
    8. echo '假';
    9. }
    10. //向obj对象中追加一个成员属性为username
    11. $obj -> username = '四海兴唐';
    12. echo $obj -> username;
    13. ?>

    上述:web前端的同学了解即可!!!





  • 相关阅读:
    黑域,黑阈 Permission denied
    手机闪存速度测试工具,AndroBench
    找进程的窗口Handle
    nginx http 正向代理
    windows命令行netstat 统计连接数
    FLIR ONE PRO热成像仪
    python2.0_s12_day14_jQuery详解
    python2.0_s12_day13_javascript&Dom&jQuery
    ssh&scp指定密钥
    apache+php生产环境错误记录
  • 原文地址:https://www.cnblogs.com/pangxiansheng/p/fd98da02b502948b0e85476e70866e10.html
Copyright © 2011-2022 走看看