php学习笔记-P1-2PHP基础-4
一、常用输出函数和时间函数
输出函数
print():类似于echo,本质上是一种结构,不是函数,可以不用括号print_r():类似于var_dump(),不会输出数据类型
时间函数
date():格式化时间戳,默认当前时间,常用:Y-m-d H:i:stime():获取当前时间戳microtime():获取微妙级别的时间strtotime():把英文文本的日期描述解析为时间戳
二、常用数学函数和函数相关的函数
数学函数
max():取最大值min():取最小值rand():指定区间的随机整数mt_rand():与rand()一样,效率高round():四舍五入ceil():向上取整floor():向下取整pow():幂abs():绝对值sqrt():平方根
函数相关的函数
function_exists():判断内存中函数是否存在func_get_arg():在自定义函数中根据位置(从0开始)获取实参的值func_get_args():在自定义函数中获取所有实参的值func_num_args():在自定义函数中获取实参个数
三、错误分类
- 错误处理:系统(或用户)在代码执行中发现错误时,告知程序员
错误分类
- 语法错误:编译不通过,不会运行(parse error)
- 运行时错误:编译通过,运行过程中出现错误(runtime error)
- 逻辑错误:代码正常运行,但结果不正确
错误代码(系统常量)
系统错误:
E_PARSE:编译错误,不会允许E_ERROR:fatal error,致命错误,程序停止运行E_WARNING:warning,警告错误,程序继续运行,结果可能出错E_NOTICE:notice,通知错误,不影响程序运行
用户错误(用户自定义错误触发时使用):
E_USER_ERRORE_USER_WARNINGE_USER_NOTICE
其他:
E_ALL:所有错误
所有
E_开头的错误代码都由1个字节存储,每种错误占一个位,错误控制可以通过位运算进行,例如:- 排除通知级别:
E_ALL & ~E_NOTICE - 只要警告和通知:
E_WARNING | E_NOTICE
四、错误触发
触发方式:
- 程序运行时触发:系统自动处理,主要针对语法错误和运行时错误
- 人为触发:针对已知的错误情况,使用判断代码触发
trigger_error(错误信息,[错误代码]):触发异常,默认notice
php脚本让浏览器按照指定字符集解析header('Content-type:text/html;charset=utf-8');
五、错误设置
错误显示设置:哪些错误要显示,如何显示
- PHP配置文件:
php.ini
dispaly_errors = On
error_reporting = E_ALL - PHP脚本设置:
error_reporting():设置和获取错误显示级别
ini_set(配置项,配置值):ini_set('error_reporting',E_ALL);,ini_set('display_errors',1);
脚本中的设置比配置文件级别高
- PHP配置文件:
错误日志设置
生产环境中,不会直接让错误展示给用户,原因:
- 不友好
- 不安全:错误会暴露很多网站信息(路径,文件名等)
生产环境希望捕捉到给程序员修改,在
php.ini中设置:- 开启日志:
log_errors = On - 指定日志文件:
error_logs = '日志文件全路径'
- 开启日志:
六、自定义错误处理
- 最简单的错误处理:
trigger_errors()函数,不会阻止系统报错 自定义错处理机制:
- 定义错误处理函数,参数:
errno,errstr[,errfile,errline,errcontext] - 注册错误处理函数:
set_error_handler(回调函数,错误代码)
- 定义错误处理函数,参数:
七、字符串定义语法
定义语法:
- 单引号字符串:适合定义比较短或没有结构要求的字符串
- 双引号字符串:同单引号字符串,中间可以使用变量
newdoc字符串:没有单引号的单引号字符串
$str = <<<'边界符' 字符串内容 边界符;heredoc字符串:没有双引号的双引号字符串,中间可以使用变量
$str = <<<边界符 字符串内容 边界符;
八、字符串转义
- 转义:特定方式定义的字符,系统会特殊处理,通常为:
\字母,如:\r\n:回车 php常用转义符号:
\':在单引号字符串中表示单引号\":在双引号字符串中表示双引号\r:回车(回到当前行的首位)\n:换行\t:tab键,输出四个空格\$:使用$
识别情况:
- 单引号字符串只能识别
\',双引号字符串不能识别\' - 双引号字符串可以识别
$,可以识别变量,必须保证变量的独立性,空格隔开,或者使用{}
- 单引号字符串只能识别
newdoc和heredoc定义边界符的规则:
- 上边界符后不能跟任何字符,只能换行
- 下边界符后只能跟
;
九、字符串长度
- 基本函数:
strlen:字节长度,中文占3个字节 多字节字符串扩展模块:mbstring
php.ini中开启:extension=php_mbstring.dllmb_strlen(字符串,字符集):按照字符集进行统计,默认ASCII
十、字符串相关函数(上)
转换函数
implode(分隔符,数组):将数组按指定分隔符连接成字符串explode(分隔符,字符串):将字符串按指定分隔符拆分成数组str_split(字符串,长度):按固定长度将字符串拆分成数组
头尾去除函数
trim(字符串[,指定字符串]):去除字符串头尾指定字符,默认空格ltrim(字符串[,指定字符串]):去除字符串头部指定字符串,默认空格rtrim(字符串[,指定字符串]):去除字符串尾部指定字符串,默认空格
截取函数
substr(字符串,开始位置[,长度]):指定位置截取字符串strstr(字符串,匹配字符):从匹配字符出现的位置截取到末尾,用来取文件名和后缀
大小写转换函数
strtolower(字符串):全部小写strtoupper(字符串):全部大写ucfirst(字符串):首字母大写
十一、字符串相关函数(下)
查找函数
strpos(字符串,查找字符串):查找首次出现的位置,没找到返回falsestrrpos(字符串,查找字符串):查找最后出现的位置,没找到返回false
替换函数
str_replace(匹配目标,替换内容,字符串):将字符串中的匹配目标替换掉
格式化函数
printf(字符串[,参数,参数...]):格式化输出文本,返回长度sprintf(字符串[,参数,参数...]):不输出,返回字符串继续处理
占位符:
%d:十进制数%f:浮点数%s:字符串
其他
str_repeat(字符串,次数):字符串重复指定次数str_shuffle(字符串):随机打乱
十二、数组基本概念
- 数组:array,将一组数据存储到指定的容器中,用变量指向容器,可以一次性访问所有数据
定义语法:
$变量 = array(元素1,元素2,元素3);$变量 = [元素1,元素2,元素3];隐式定义:
$变量[] = 值;,下标 = 数组最大的整数下标 + 1$变量[下标] = 值;,下标可以是整数或名称(规则与变量相似)
数组特点:
下标可以是整数和字符串(含空字符串)
- 索引数组:下标全都是整数
- 关联数组:下标全都是字符串
- 混合数组:下标整数和字符串都有
- 整数下标和字符串下标可以同时存在
- 元素顺序只跟放入顺序有关,跟下标无关
- 整数下标有自增特性
- 数组元素数据类型没有限制
- 数组长度没有限制
- 数组效率低,内容可能很大,存储在堆区,分配连续内存
特殊值下标会自动转换
$arr[false] = false; $arr[true] = true; $arr[NULL] = 'NULL'; var_dump($arr);结果:
array(3) { [0]=> bool(false) [1]=> bool(true) [""]=> string(4) "NULL" }
十三、多维数组
多维数组:数组里面的元素也是数组
- 二维数组:数组中的元素都是一维数组,表格
- 多维数组:php没有维度限制,但超过三维,访问速度降低
- 异形数组(不规则数组)
尽量使用规则的数组,降低访问难度
十四、遍历数组(上)
- 遍历数组:从数组中依次取出全部数据
foreach语法:
foreach($数组 as [$下标 =>] $值){ //内容 }foreach原理
数组内部有一个指针指向数组的第一个元素,foreach利用指针获取元素并移动指针foreach会重置指针
十五、遍历数组(中)
for循环遍历数组:
- 获取数组长度:
count() - 适用于下标是规律整数的索引数组
- 获取数组长度:
十六、遍历数组(下)
while配合each和list遍历数组:
- while:定义边界条件
each:取得数组指针指向元素的下标和值,以四个元素的数组返回,并移动指针,如果取不到,指针移动到最后并返回false:
[ 0 => 下标, 1 => 值, 'key' => 下标, 'value' => 值 ]- list:一种结构,从数组中取出数据,放入一堆变量中,只能从0开始按整数下标取值,变量个数不能多于整数下标个数
语法结构:
$arr = [1,'name'=>'tom','age'=>30]; while(list($key,$value) = each($arr)){ echo 'key is : '.$key.' value is : '.$value.'<br/>'; }
评论已关闭