PHP基础语法之运算控制

啥也不多说,直接贴代码。

简单运算符

<?php
/* 简单运算符 */
header("Content-Type: text/plain; charset=utf-8");
$number1 = 11;
$number2 = 33.3;
echo $number2 + $number1, "\n"; //加法运算
echo $number1 - $number2, "\n"; //减法运算
echo "a123" + 11, "\n"; //字符串转换为数字的过程中会从起始查找,直到非数字
echo "123a" + 11, "\n";
echo "3.3aad" * 3, "\n"; //表示可转换为浮点型

echo round($number2), "\n"; //输出number的取整值,此时为33
echo round(33.7), "\n"; //此时为34,表示该数取得的值为四舍五入
echo round(434.43213453, 4), "\n"; //表示取得四位小数
echo $number1 % 3, "\n"; //求余数运算
echo $number1 * $number2, "\n"; //乘法,根据精确度高的保留

echo "原始number1的值:", $number1, "\n";
echo "现在\$number1++的值:", $number1++, "\n"; //当前自己加一后并没有返回,而是保留到下一次生效
echo "之后++\$number1的值:", ++$number1, "\n"; //上一次加一后值为12,本次加一立即生效值为13,且立即返回,而不是等到下一条语句

echo ++$number2, "\n"; //对于浮点数加一同样有效

echo $new = $number1, "\n"; //将值赋给$new
echo $new += $number2, "\n"; //该语句相当于$new = $new+$number2
echo $new -= 13, "\n"; //相当于 $new = $new -13;
echo $new /= 2, "\n"; //相当于 $new = $new / 2;自身除以2
echo $new %= 5, "\n"; //相当于 $new = $new % 5;自身除5取余数,此处为浮点数去余数,直接保留为整数,不存在四舍五入
echo 45 % 3.4, "\n"; //对于除以非整数取余数,得到的结果为0
echo (int)15.7, "\n"; //强制转换过程中也没有四舍五入
if (13 > 4) echo "大于比较符\n";
if (4 < 13) echo "小于比较符\n";
if (4 >= 4) echo "大于等于比较\n";
if (3 <= 3) echo "小于等于\n";
if (10 == "10") echo "等于比较\n";
if (10 !== "10") echo "非全等于比较\n";
$i = 100;
if (100 === $i) echo "全等比较\n";
if (10 > 5 && 2 != 0) echo "当两个都满足时成立\n";
if (10 > 5 || $i++ > 3) echo "当其中任意一个成立时成立\n";
echo $i, "\n"; //此时输出还是100,原因在于在执行10 >5 时,前面一个条件已经满足,就不会再继续执行后面的判断
if (null) echo "null 为成立条件\n";
else echo "null 为非成立条件\n";
if (!null) echo "!null 为成立条件\n";
else echo "!null 为失败条件";
?>

判断语句

<?php
/* 判断语句 */
header("Content-Type: text/plain; charset=utf-8;");
$a = 10;
if ($a) //这种判断语句适合在,判断之后只有一条语句的情况下可行
    echo $a . " (\$a)是一个真的成立条件\n";
else
    echo "$a 让if(\$a)条件不成立\n"; //此处将$以转义符的形式进行转义输出
if (($a - 5) / 3) { //此处先将$value进行赋值,然后用$value进行false比较,不等成立
    echo "该条件成立\n";
    echo "值为", ($a - 5) / 3, "\n";
} else if ($a % 3 == 1) //显然虽然能够判断,但前面已经成立,就没有机会
    echo "第二个条件成立\n";
else { //该无机会执行,else表示前面的都不成立时会执行这里面的代码
    echo "当前日期:" . getdate(), "\n";
    echo "所以之前条件都不满足\n";
}

if ($a == 10): //这是另一种条件判断写法
    echo '$a == 10 是成立的' . "\n"; //前面一段是单引号,所以变量$a不会被替换为值
    echo "另一行代码\n"; elseif ($a > 10): //该写法相当于用:冒号替代了括号
    echo "此处不会成立\n"; else: //如果判断成立
    echo 1 + 3; //输出4
    echo false; //什么都看不到,和null,NULL,"",'',true一样,输出的内容是看不到的
endif; //使用这种方式的if语句必须要以endif;结束

//注意的是,在使用判断的时候,如果是多行要执行,必须要使用括号,或者使用另一种模式,该模式适用于HTML模板中使用,不适合在纯代码环境中
?>

switch控制语句

<?php
/* switch控制语句 */

header("Content-Type: text/plain; charset=utf-8"); //纯文本输出

echo '有如下IF流程语句,将修改为SWITCH控制语句' . "\n";

$rand = rand(); //生成一个随机数,便于产生多种结果,该数为整数
echo '$rand = ', $rand, "\n";
if ($rand % 5 == 1) {
    echo "余数为1\n";
} elseif ($rand % 5 == 2) {
    echo "余数为2\n";
} elseif ($rand % 5 == 3) {
    echo "余数为3\n";
} else {
    echo "余数不为1,2,3\n";
}

$rand = rand(10, 20); //重10到20之间产生一个随机数
echo "new \$rand is $rand\n";
switch ($rand % 5) {
    case 1: //使用case时,多行不需要进行括号
        echo "余数为1\n";
        echo "多输出一行\n";
        break;
    case "2":
        echo "余数为2\n";
        break;
    case 3:
        echo "余数为3\n";
        break;
    default: //表示上面的条件都不存在时候的最终选择
        echo "余数不为1,2,3\n";
}
switch ($rand % 3): //该语句和if的语句类似,不需要括号,适合在模板中使用
    case 1:
        echo "余数为1\n";
        break;
    default:
        echo "余数不1\n";
endswitch;
?>

循环语句

<?php
/* 循环语句 */

header("Content-Type: text/plain; charset=utf-8"); //纯文本输出

echo "输出一个9*9乘法表\n";

for ($i = 1; $i <= 9; $i++) { //9行的没一层循环
    for ($j = 1; $j <= 9; $j++) { //当前输出9列,不对乘法表进行排列
        echo "$i*$j=" . $i * $j . "\t"; //这样的输出,可以看到每一列第二个参数都一致,这是与乘法表违背的
    }
    echo "\n";
}
echo "\n修改一个规则后的乘法表\n";
for ($i = 1; $i <= 9; $i++) {
    for ($j = 1; $j <= 9; $j++) { //但是这里我们要取得是做下一半,所以第一行时,第一列只有一个,第二列只有两个,所以第二层循环条件需要修改
        echo "$j*$i=" . $i * $j . "\t"; //调换$i 和 $j的次序,符合了该规则
    }
    echo "\n";
}

echo "\n循环条件修改后的乘法表\n";
for ($i = 1; $i <= 9; $i++) {
    for ($j = 1; $j <= $i; $j++) {
        echo "$j*$i=" . $i * $j . "\t";
    }
    echo "\n";
}
echo "\n0-20中3的倍数有:";
for ($i = 0; $i < 20; $i++): //此处使用for():的格式,同样需要以endfor;结束,不需要括号
    if ($i % 3 == 0)
        echo "$i\t";
endfor;

echo "\narray(1,3,4,5,7)集合中的数据进行输出:";
foreach (array(1, 3, 4, 5, 7) as $i) { //此处是使用foreach()循环,格式为foreach(集合 as 赋给的对象)
    echo "$i\t";
}
echo "\narray('a'=>'1','b'=>3,'c'=>5,7)的集合进行输出:";
foreach (array('a' => '1', 'b' => 3, 'c' => 5, 7) as $id => $v): //此处使用foreach():不需要括号,但需要已endforeach结束
    //此处使用的赋给的对象使用了,$id=>$v的格式,在于集合可能会有一个名字,这样可以对名字和值同时取出,如果集合中没有定义ID则会取默认值
    echo $id, "=>";
    echo $v . "\t";
endforeach;

$i = 10;
$count = 1;
while ($i--) { //while循环语句,输出10的阶乘,同样该语句有另一个版本,就是while():...endwhile;
    $count *= $i;
}
echo "\n1乘到10的值为:$count\n";

$i = 0;
$count = 0;
do {
    $count += $i;
} while ($i++ < 100);
echo "1加到100的值为:$count\n";
?>

2条评论在“PHP基础语法之运算控制”

回复 Era   取消