一、常用输出函数和时间函数

  1. 输出函数

    • print():类似于echo,本质上是一种结构,不是函数,可以不用括号
    • print_r():类似于var_dump(),不会输出数据类型
  2. 时间函数

    • date():格式化时间戳,默认当前时间,常用:Y-m-d H:i:s
    • time():获取当前时间戳
    • microtime():获取微妙级别的时间
    • strtotime():把英文文本的日期描述解析为时间戳

二、常用数学函数和函数相关的函数

  1. 数学函数

    • max():取最大值
    • min():取最小值
    • rand():指定区间的随机整数
    • mt_rand():与rand()一样,效率高
    • round():四舍五入
    • ceil():向上取整
    • floor():向下取整
    • pow():幂
    • abs():绝对值
    • sqrt():平方根
  2. 函数相关的函数

    • function_exists():判断内存中函数是否存在
    • func_get_arg():在自定义函数中根据位置(从0开始)获取实参的值
    • func_get_args():在自定义函数中获取所有实参的值
    • func_num_args():在自定义函数中获取实参个数

三、错误分类

  1. 错误处理:系统(或用户)在代码执行中发现错误时,告知程序员
  2. 错误分类

    • 语法错误:编译不通过,不会运行(parse error)
    • 运行时错误:编译通过,运行过程中出现错误(runtime error)
    • 逻辑错误:代码正常运行,但结果不正确
  3. 错误代码(系统常量)

    • 系统错误:

      • E_PARSE:编译错误,不会允许
      • E_ERROR:fatal error,致命错误,程序停止运行
      • E_WARNING:warning,警告错误,程序继续运行,结果可能出错
      • E_NOTICE:notice,通知错误,不影响程序运行
    • 用户错误(用户自定义错误触发时使用):

      • E_USER_ERROR
      • E_USER_WARNING
      • E_USER_NOTICE
    • 其他:

      • E_ALL:所有错误

    所有E_开头的错误代码都由1个字节存储,每种错误占一个位,错误控制可以通过位运算进行,例如:

    • 排除通知级别:E_ALL & ~E_NOTICE
    • 只要警告和通知:E_WARNING | E_NOTICE

四、错误触发

  1. 触发方式:

    • 程序运行时触发:系统自动处理,主要针对语法错误和运行时错误
    • 人为触发:针对已知的错误情况,使用判断代码触发
      trigger_error(错误信息,[错误代码]):触发异常,默认notice
php脚本让浏览器按照指定字符集解析
header('Content-type:text/html;charset=utf-8');

五、错误设置

  1. 错误显示设置:哪些错误要显示,如何显示

    • 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);
    脚本中的设置比配置文件级别高
  2. 错误日志设置

    • 生产环境中,不会直接让错误展示给用户,原因:

      • 不友好
      • 不安全:错误会暴露很多网站信息(路径,文件名等)
    • 生产环境希望捕捉到给程序员修改,在php.ini中设置:

      • 开启日志:log_errors = On
      • 指定日志文件:error_logs = '日志文件全路径'

六、自定义错误处理

  1. 最简单的错误处理:trigger_errors()函数,不会阻止系统报错
  2. 自定义错处理机制:

    • 定义错误处理函数,参数:errno,errstr[,errfile,errline,errcontext]
    • 注册错误处理函数:set_error_handler(回调函数,错误代码)

七、字符串定义语法

  1. 定义语法:

    • 单引号字符串:适合定义比较短或没有结构要求的字符串
    • 双引号字符串:同单引号字符串,中间可以使用变量
    • newdoc字符串:没有单引号的单引号字符串

      $str = <<<'边界符'
       字符串内容
      边界符;
    • heredoc字符串:没有双引号的双引号字符串,中间可以使用变量

      $str = <<<边界符
       字符串内容
      边界符;

八、字符串转义

  1. 转义:特定方式定义的字符,系统会特殊处理,通常为:\字母,如:\r\n:回车
  2. php常用转义符号:

    • \':在单引号字符串中表示单引号
    • \":在双引号字符串中表示双引号
    • \r:回车(回到当前行的首位)
    • \n:换行
    • \ttab键,输出四个空格
    • \$:使用$
  3. 识别情况:

    • 单引号字符串只能识别\',双引号字符串不能识别\'
    • 双引号字符串可以识别$,可以识别变量,必须保证变量的独立性,空格隔开,或者使用{}
  4. newdoc和heredoc定义边界符的规则:

    • 上边界符后不能跟任何字符,只能换行
    • 下边界符后只能跟;

九、字符串长度

  1. 基本函数:strlen:字节长度,中文占3个字节
  2. 多字节字符串扩展模块:mbstring

    • php.ini中开启:extension=php_mbstring.dll
    • mb_strlen(字符串,字符集):按照字符集进行统计,默认ASCII

十、字符串相关函数(上)

  1. 转换函数

    • implode(分隔符,数组):将数组按指定分隔符连接成字符串
    • explode(分隔符,字符串):将字符串按指定分隔符拆分成数组
    • str_split(字符串,长度):按固定长度将字符串拆分成数组
  2. 头尾去除函数

    • trim(字符串[,指定字符串]):去除字符串头尾指定字符,默认空格
    • ltrim(字符串[,指定字符串]):去除字符串头部指定字符串,默认空格
    • rtrim(字符串[,指定字符串]):去除字符串尾部指定字符串,默认空格
  3. 截取函数

    • substr(字符串,开始位置[,长度]):指定位置截取字符串
    • strstr(字符串,匹配字符):从匹配字符出现的位置截取到末尾,用来取文件名和后缀
  4. 大小写转换函数

    • strtolower(字符串):全部小写
    • strtoupper(字符串):全部大写
    • ucfirst(字符串):首字母大写

十一、字符串相关函数(下)

  1. 查找函数

    • strpos(字符串,查找字符串):查找首次出现的位置,没找到返回false
    • strrpos(字符串,查找字符串):查找最后出现的位置,没找到返回false
  2. 替换函数

    • str_replace(匹配目标,替换内容,字符串):将字符串中的匹配目标替换掉
  3. 格式化函数

    • printf(字符串[,参数,参数...]):格式化输出文本,返回长度
    • sprintf(字符串[,参数,参数...]):不输出,返回字符串继续处理

    占位符:

    • %d:十进制数
    • %f:浮点数
    • %s:字符串
  4. 其他

    • str_repeat(字符串,次数):字符串重复指定次数
    • str_shuffle(字符串):随机打乱

十二、数组基本概念

  1. 数组:array,将一组数据存储到指定的容器中,用变量指向容器,可以一次性访问所有数据
  2. 定义语法:

    • $变量 = array(元素1,元素2,元素3);
    • $变量 = [元素1,元素2,元素3];
    • 隐式定义:

      • $变量[] = 值;,下标 = 数组最大的整数下标 + 1
      • $变量[下标] = 值;,下标可以是整数或名称(规则与变量相似)
  3. 数组特点:

    • 下标可以是整数和字符串(含空字符串)

      • 索引数组:下标全都是整数
      • 关联数组:下标全都是字符串
      • 混合数组:下标整数和字符串都有
    • 整数下标和字符串下标可以同时存在
    • 元素顺序只跟放入顺序有关,跟下标无关
    • 整数下标有自增特性
    • 数组元素数据类型没有限制
    • 数组长度没有限制
    • 数组效率低,内容可能很大,存储在堆区,分配连续内存
    • 特殊值下标会自动转换

      $arr[false] = false;
      $arr[true] = true;
      $arr[NULL] = 'NULL';
      var_dump($arr);

      结果:

      array(3) {
      [0]=>
      bool(false)
      [1]=>
      bool(true)
      [""]=>
      string(4) "NULL"
      }

十三、多维数组

  1. 多维数组:数组里面的元素也是数组

    • 二维数组:数组中的元素都是一维数组,表格
    • 多维数组:php没有维度限制,但超过三维,访问速度降低
    • 异形数组(不规则数组)
    尽量使用规则的数组,降低访问难度

十四、遍历数组(上)

  1. 遍历数组:从数组中依次取出全部数据
  2. foreach语法:

    foreach($数组 as [$下标 =>] $值){
     //内容
    }
  3. foreach原理
    数组内部有一个指针指向数组的第一个元素,foreach利用指针获取元素并移动指针

    foreach会重置指针

十五、遍历数组(中)

  1. for循环遍历数组:

    • 获取数组长度:count()
    • 适用于下标是规律整数的索引数组

十六、遍历数组(下)

  1. 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/>';
      }

标签: none

评论已关闭