php学习笔记
1、运算符
- 关键点:需要什么操作,几个操作数,返回值的类型,应用场景
- 比较运算符:比较操作,两个操作数,返回布尔值
|大于>,小于<,等于==,全等于===
|—太空船运算<=>(前大于后,返回1,前小于后,返回-1,前后相等,返回0) 逻辑运算符:逻辑操作,两个或一个操作数,返回布尔值
|—&&与操作,||或操作,!非操作
|—前后操作数都自动转换为布尔值
|—短路运算:当与操作第一个操作数为false,就停止运算,返回false,当或操作第一个操作数为true,就停止运算,返回true- 三元运算符:表达式 ? 为真时的值 : 为假时的值
null合并运算符,主要用于设置默认值
$page = isset($_GET[‘page’]) ? $_GET[‘page’] : 1;
用null合并运算后:
$page = $_GET[‘page’] ?? 1;
2、流程控制
- 顺序:最普通的,从上到下逐步执行
- 分支:设置条件,根据判断结果选择执行路径
|—单分支:if(conditions){};
|—单条语句时,可省略{},if(conditions)…;
|—多条语句时,可改造为 if(conditions): …;…;endif;
|—双分支:if(conditions){}else{};
|—可改造为 if(conditions):…;…;else:…;…;endif;
|—多分支: switch(conditions){case1:…;break;case2:…;break;default:…;break;}
|—模板语法:将每一个’{‘改为’:’,最后一个’}’改为endif或endswitch,中间的}去掉。 - 循环:设置条件,满足执行,不满足跳过
|—判断型循环
|—current($arr),返回数组$arr的第一个值,next($arr),将$arr数组的当前指针向后移一位,reset($arr),将$arr数组的指针复位
|—count($arr)返回数组$arr中的元素个数
|—while (conditions){…},适用模板语法
|—do{…}while(donditions),不适用模板语法
|—计数型循环
|—for(计数变量;计数条件;计数变量自增或自减){…},适用模板语法。
3、函数:代码复用的手段
- 函数声明
|—function 函数名 (形参列表): 返回值类型{…},形参和返回值类型可以不写
|—func_get_args()[i],返回函数的第i个形参
|—func_get_arg(i),同上 - 函数类型
|—自定义函数,即按以上方式,由用户声明的函数
|—系统函数,系统已经定义好的函数
|—mb_substr($str,x,y),返回字符串$str的第x个开始的y个字符
|—可变函数,将函数名放在一个变量中
|—匿名函数,没有名称的函数,将函数声名直接赋给一个变量,$var = function(){…};
|—闭包函数可以通过关键字use导入函数外声明的变量$b$var = function ( $a ) use ( $b ) : 返回类型{...;return ...;};
- 函数的返回值
|—函数必有返回值,且只有一个返回值
|—多值返回方式—通过字符串拼接,return $a.$b….;
|—多值返回方式—通过返回数组, return $arr[$a,$b,…];
|—多值返回方式—通过json格式, return json_encode([‘a’=>$a,’b’=>$b,…]); 数据格式为:{‘a’:$a的值,’b’:$b的值}
|—将返回值序列化成字符串 return serialize($var);数据格式为 格式:长度:值,eg. s:9:{‘hello jk!’};a:2:{0:a,1:b},反序列化用unserialize()函数 - 函数的参数
|—值参数,默认方式,函数运算不影响所传参数的值
|—引用参数,在函数形参列表中,加上取地址符&,函数运算结果就会影响所传参数的值
|—默认参数,函数列表给个初始化的值,当不传此参数时,函数将使用此初始化值当作默认值
|—剩余参数(…rest/…spread),将所传参数全部归纳到一个数组中,function funname (…$args){},即:调用函数funname()时,所传参数将被放在$args[]数组中,调用函数时可以给所传数组参数前加’…’,与前者操作相反。|--array_sum($arr)返回数组值的合
- 函数调用
|—回调函数:可不等当前函数执行完成,就可执行后续代码|--call_user_func('funcname',$args)
|--call_user_func_array('funcname',[])
|--array_map(闭包,$args)
|--range(x,y,z),返回从x到y的数,步长z可不加,默认1
- 函数的命名空间
|—php中不允许命名相同的函数,因此出现了命名空间,在不同的命名空间中,可以命名同名函数
4、字符串
- 字符串长度上限为2G
- 单引号和双引号都可以定义字符串
- 单引号定义的字符串内部不做解析,原样输出
- 双引号定义的字符器可以解析内部变量
- 定界符{}
- heredoc相当于双引号的加强版,内部可以加双引号,且不用转义
|—eg. echo <<< 标识符 ….. 标识符; - nodoc相当于单引号的加强版,适用于大段文本,内部不能用变量
|—eg. echo <<< ‘标识符’ ….. 标识符;