运算符
表达式,由操作数和操作符组成,并返回一个确切值的程序短域
- % 取模,也叫取余,余数一定是整数
printf('10 / 4的余数是:%d <br>', (10 % 4));
$year = date('Y');
echo $year.'<br>';
if ($year % 4 === 0 && $year % 100 !== 0) {
printf('%d年是闰年<br>', $year);
} else {
printf('%d年不是闰年<br>', $year);
}
- 自增
- ++$n 先加后用
$n = 20; printf('++$n=%d,$n=%d<br>', ++$n, $n);
- $n++ 先用后加
$n = 10; printf('$n++=%d,$n=%d<br>', $n++, $n);
- ++$n 先加后用
- 自减
- —$n 先减后用
$n = 20; printf('--$n=%d,$n=%d<br>', --$n, $n);
- $n— 先用后减
$n = 10; printf('$n--=%d,$n=%d<br>', $n--, $n);
- —$n 先减后用
- 赋值运算
$a = 1;
$b = 2;
//$a = $a + $b;
$a += $b;
echo $a . '<br>';
- .=:字符串拼接
$str = 'php';
$str .= '是世界上最好的语言';
echo $str . '<br>';
- 比较运算,返回的是bool类型
var_dump(2 > 1);
- == 只要求值相等就是true,如果两边类型不同则自动转换
var_export(1 == '1');
echo '<br>';
var_export(1 == (int)'1');
echo '<br>';
var_export((string)1 == '1');
- ===:要求值与类型全相等才返回true
var_export(1 === 1);
echo '<br>';
var_export(1 === '1');
echo '<br>';
var_export(1 === (int)'1');
echo '<br>';
- php7+ 太空船$a <=> $b
当$a小于、等于、大于 $b时 分别返回-1、0、1$num1 = 1;
$num2 = 5;
echo $num1 <=> $num2;
- == 只要求值相等就是true,如果两边类型不同则自动转换
- 逻辑运算符
- && 与 要求两边都是true才为true 交作短路求值
var_dump(false && true);
var_dump(false && false);
var_dump(true && true);
- || 或 有一个为true 则为true
var_dump(true || false);
var_dump(false || true);
var_dump(false || false);
- ! 取反
var_dump(!false, !true);
- && 与 要求两边都是true才为true 交作短路求值
- 三元运算符与null合并运算符
- 三元运算
$age = 1; echo $age >= 18 ? '允许' : '不允许';
- null合并运算符
$page = $_GET['p'] ?? 1; echo 'p' . $page;
- 三元运算
流程控制:分支
单分支
$age = 18;
if ($age >= 18) {
echo '成人';
}
//替代语法:省略大括号
if ($age >= 18) :
echo '成人';
endif;
if ($age >= 18) {
echo '成人','<br>';
} else {
echo '未成年','<br>';
}
if ($age >= 18) :
echo '成人','<br>';
else :
echo '未成年','<br>';
endif;
//简化 三元
echo $age >= 18 ? '成人' : '未成年';
多分支
$age = 22;
if ($age >= 40 && $age < 65) {
echo '中年人';
} elseif ($age < 40 && $age >= 18) {
echo '青年人';
} else {
echo '未成年';
}
//替代语法
if ($age >= 40 && $age < 65) :
echo '中年人';
elseif ($age < 40 && $age >= 18) :
echo '青年人';
else :
echo '未成年';
endif;
- switch 多分支的简化
switch 多用作单值判断$age = 55;
switch ($age) {
case $age >= 40 && $age < 65:
echo '中年人','<br>';
break;
case $age < 40 && $age >= 18:
echo '青年人','<br>';
break;
default:
echo '未成年','<br>';
}
//替代语法
switch ($age):
case $age >= 40 && $age < 65:
echo '中年人','<br>';
break;
case $age < 40 && $age >= 18:
echo '青年人','<br>';
break;
default:
echo '未成年','<br>';
endswitch;
循环结构
三要素:循环条件的初始值,循环条件,更新循环条件
- 1、入口型 while(){…}
$arr=['a','b','c','d'];
$i=0;
while($i<count($arr)){
echo $arr[$i].'<br>';
$i++;
};
- 2、出口型 do{}while(),当前条件为false时,至少执行一次循环体
$i=0;
do{
echo $arr[$i].'<br>';
$i++;
}while($i<count($arr));
计算式 for()可以视为while的简化
for($i=0;$i<count($arr);$i++){
echo $arr[$i].'<br>';
}
- 提前终止循环,进入到下一轮
for($i=0;$i<count($arr);$i++){
if($i===2) continue;
if($i>2) break;
echo $arr[$i].'<br>';
}
- 遍历数组 foreach (数组 as 别名)
foreach($arr as $i=>$item){
echo $arr[$i].'<br>';
}
文件包含:模块化编程
文件包含的本质是引入一个html代码。所以引入的php文件必须写<?php ?>标签
- include :将一个外部的文档插入到当前的代码块中
被插入的脚本,可以访问当前作用域中的所有成员
include是在运行阶段包含,可以使用if中;if(true){ include 'file.php'; }
- require
require 'file1.php'; echo '继续';
include 'file1.php'; exit; echo '继续';
总结:require代码出错时终止执行,推荐使用require引入文件