PHP 运算和流程控制

PHP 运算符

算数运算符

符号 示例 描述
+ $a+$b $a与$b 的和
- $a-$b $a与$b 的差
* $a*$b $a与$b 的积
/ $a*$b $a与$b 的商
% $a%$b $a与$b 的余(模) 取余
++ $a++/++$a 先用再加/先加再用
-- $a--/--$a 先用再减/先减再用
** 3**3 幂运算:2 的 4 次方,需要 php5.6+版本

下面使用一个例子来举例算数运算符的运用:

$year = date("Y");
if ($year%4===0 &&$year%100!=0){
    echo "今年是闰年~";
}else{
    echo "今年是平年~";
}

比较运算符

符号 示例 描述
> $a>$b $a大于$b
< $a<$b $a小于$b
= $a=$b 将$b的值赋值给$a
== $a==$b $a与$b 的值相等
=== $a===$b $a与$b 的值和类型都相等
>= $a>=$b $a大于等于$b
<= $a<=$b $a小于等于$b

说明一下======的区别:
=:赋值运算符
将某一个变量的值赋值给另外一个变量

$a = 6;
$b = $a;

==:只要值相等就输出 true,否则输出 false

$a = 6;
$b = '6';
echo ($a == $b); //输出  1
var_dump($a == $b); //输出 bool(true)

===:不但需要值相等,还需要类型相等

$a = 6;
$b = '6';
var_dump($a == $b);  //   bool(true)
echo "<br>";
var_dump($a === $b); //   bool(false)

逻辑运算符

|符号|示例|描述|
|&&|$a>0 && $b>0|类似英文and 需要两边条件都为true才满足条件|
||||$a>0 ||& $b>0|类似英文or 其中一个条件为true即满足条件|
| / not|var_dump(!(10>20))|取反 如果条件为true 输出结果就为false|

var_dump(!(10>20));bool(true);

其他运算符

  • 太空船运算符
    <=>:组合比较符号

    PHP 7 新增加的太空船运算符(组合比较符)用于比较两个表达式 $a 和 $b,如果 $a 小于、等于或大于 $b 时,它分别返回-1、0 或 1。

print(1<=>2); //输出 -1
print(1<=>1); //输出 1
print(1<=>0); //输出 0
  • 三元运算符

    通常是在 if 条件判断时简化使用。
    通常有三个表达式,两个运算符?:
    语法:表达式?满足条件时的语句:不满足条件时的语句

$price = 2000;
echo $price > 1000?"太贵了,买不起~":"价格还可以,我先买了~";
  • .点连接符

    作用:连接字符串
    $str1.$str2返回连接之后的字符串。

流程控制

分支结构

  1. 单分支结构 if
if($price>1000)
{
    echo "太贵了,我买不起~";
}
  1. 双分支结构if else
if($price>1000)
{
    echo "太贵了,我买不起~";
}else
{
    "价格还可以,我买了";
}
  1. 多分支结构
  • if elseif else
$price = 3500;
if($price < 999){
    echo "价格一般";
}elseif($price < 1200){
    echo "价格有点小贵";
}elseif($price < 2000){
    echo "太贵啦,买不起~";
}else{
    echo "超级贵,大家别买~";
}
  • swicth case default

    PS:
    ① 使用swicth case进行多分支条件判断的时候,必须在每个条件符合语句执行完毕后添加一个break跳出来,否则会出错。
    swicth case通常用来做单值判断

$price = 500;
switch($price){
    case $price <999:
        echo "价格一般";
        break;
    case $price < 1200:
        echo "价格有点小贵";
        break;
    defalut:
        echo "太贵了,大家别买";
}

循环结构

  1. while循环 --> 入口判断型

    PS:while循环在循环体之中必须要有更新循环条件的语句,否则会进入死循环~
    什么是入口判断型:就是当程序执行到该循环时,条件进入后先判断条件,条件成立即可执行,不成立就跳到下一个循环体

语法:while(条件){code.........}

$cities = ['合肥','南京','杭州','苏州','上海'];
while ($city = current($cities)){//current  可以用来求数组的长度,类似JS中的length
    echo $city.'<br>';
    next($cities);  //next 函数,将索引跳转到下一位,可以理解为跳转到下一个数组成员
}

指针复位函数:reset():将指针还原,如上述循环,最后将指针还原后
$cities = ['合肥','南京','杭州','苏州','上海'];

  1. do while循环 -->出口判断型

    什么是出口判断型:就是当程序执行到循环体的时候,先执行条件符合语句,再来判断条件是否成立,条件成立输出,不成立就跳到下一个循环体
    条件时放在出口

$cities = ['合肥','南京','杭州','苏州','上海'];
do{
    echo $city.'<br>';
    next($cities);
}while($city = current($cities));

  1. for循环

    语法:for(变量;判断条件;更新循环条件)

for($i=0;$i<count($cities);$i++){
    echo $cities[$i],'<br>';
}
echo "<hr>"
for($i=0;$i<count($cities);$i++){
    // 有条件的循环:需要使用到continue函数(跳过)
    if($i===2 || $i===3) continue;  //如果i = 2/3,就跳过,不输出。
    echo $cities[$i],'<br>';
}

PHP 模版语法

常用于:流程控制之中。如分支控制和循环控制都可以使用
语法:便捷记忆:将{替换为:} 替换为 end<xxx>

这里使用 switch 循环来演示:

echo "<hr>";
$price = 500;
switch($price)://将{替换为:
    case $price <999:
        echo "价格一般";
        break;
    case $price < 1200:
        echo "价格有点小贵";
        break;
    default :
        echo "太贵了,大家别买";
endswitch;
// 这里是将}替换为了endswitch,其他流程控制类似,如endif、endwhile、endfor、
//endforeach 以及 endswitch;

模板语法的作用:
存在就是合理,它自有它的用处,这些语法能发挥的地方是在 PHP 和 HTML 混合页面的代码里面。好处如下:

1)使 HTML 和 PHP 混合页面代码更加干净整齐。

2)流程控制逻辑更清晰,代码更容易阅读。

实例:利用循环等操作来实现编写一个简单的计算器

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PHP计算器</title>
</head>
<body>
    <?php
    error_reporting(E_ALL & ~E_NOTICE);
        $mess = '';
        if (isset($_POST['sub']))
        {
            if($_POST['num1'] == ' '){
                $mess .= "第一个数字不能为空~<br>";
            }
            if($_POST['num2'] == ''){
                $mess .= "第二个数字不能为空~<br>";
            }else{
                if($_POST['opt'] == "/" && $_POST['num2'] == 0)
                {
                    $mess .= "除数不能为0~<br>";

                }elseif($_POST['opt'] == "%" && $_POST['num2'] == 0)
                {
                    $mess .= "除数不能为0~<br>";
                }
            }
        }
    ?>
    <table>
        <form action="" method="post">
            <h1>计算器</h1>
            <tr>
                <td>
                    <input type="number" size="4" name="num1" value="<?php echo $_POST['num1']; ?>" >
                </td>
                <td>
                    <select name="opt"  >
                        <option value="+" <?php echo $_POST["opt"] == "+" ? "selected": "" ?>>+</option>
                        <option value="-" <?php echo $_POST["opt"] == "-" ? "selected": "" ?>>-</option>
                        <option value="*" <?php echo $_POST["opt"] == "*" ? "selected": "" ?>>*</option>
                        <option value="/" <?php echo $_POST["opt"] == "/" ? "selected": "" ?>>/</option>
                        <option value="%" <?php echo $_POST["opt"] == "%" ? "selected": "" ?>>%</option>

                    </select>
                </td>
                <td>
                    <input type="number" size="4" name="num2" value="<?php echo $_POST['num2']; ?>" >
                </td>
                <td>
                    <input type="submit"   name="sub" value="计算" >
                </td>
            </tr>
        </form>
        <?php
            if(!$mess)
            {
                $sum = 0;
                switch($_POST['opt'])
                {
                case "+":
                    $sum = $_POST['num1'] + $_POST['num2']; break;
                case "-":
                    $sum = $_POST['num1'] - $_POST['num2']; break;
                case "*":
                    $sum = $_POST['num1'] * $_POST['num2']; break;
                case "/":
                    $sum = $_POST['num1'] / $_POST['num2']; break;
                case "%":
                    $sum = $_POST['num1'] % $_POST['num2']; break;
                }

                $res = "结果: {$_POST['num1']} {$_POST['opt']} {$_POST['num2']} = {$sum}";
                echo isset($_POST['num1']) ? $res : '';

            }else {
                echo $mess;
            }
        ?>
    </table>
</body>
最后修改:2020 年 11 月 23 日 11 : 47 AM
如果觉得我的文章对你有用,请随意赞赏