PHP学习笔记

PHP学习笔记

环境配置

Apache

​ 配置文件:安装目录\apache\conf\httpd.conf

  • DocumentRoot:默认站点

  • ServerName:设置服务器用于辨识自己的主机名和端口号

  • LoadModule:加载模块

  • Listen:定义apache监听的端口

    搭建基于域名的虚拟主机教程略

    *版本不同可能会有区别*

PHP

安装目录\php文件夹\

  • ext文件夹:拓展包

  • php5apache---.dll:apache支持包,加入LoadModule中

  • php.ini-xxx:PHP配置文件,需改为ini文件

  • php.ini中date.timezone的值改为PRC(中国)

    *版本不同可能会有区别*

PHP+Apache

在httpd.conf中添加:

  1. LoadModule php5_module ‘apache支持包路径’ --加载PHP模块
  2. PHPIniDir ‘php.ini所在路径’ --加载PHP配置文件
  3. AddType application/x-httpd-php .php --将.php文件分配给PHP解析

*版本不同可能会有区别*

MySQL

  • 安装目录下的my.ini为配置文件
  • 访问数据库命令参数:-h 主机地址,-P 端口,-u 用户名,-p 密码

PHP+MySQL

  1. PHP加载MySQL拓展:在php.ini中添加extension=php_mysql.dll,修改extension_dir的值为ext文件夹的绝对路径(PHP版本不同可能有区别)

PHP语法

变量

  1. 定义变量不需要规定数据类型

  2. 变量名以 “$” 符号开头,只能包含数字、字母、下划线,不能数字开头

  3. 使用unset函数清除变量

  4. 预定义变量

  • $_GET:存储以get方式提交的表单
  • $_POST:存储以post方式提交的表单
  • $_REQUEST:存储以get或post方式提交的表单
  • $GLOBALS:存储PHP中所有全局变量
  • $_SERVER:服务器信息
  • $_SESSIOON:session会话信息
  • $_COOKIE:cookie会话信息
  • $_ENV:环境信息
  • $_FILES:用户上传的文件信息
  1. 可变变量:一个变量的内容可作为另一变量的名字

    $a='b';
    $b='bb';
    //   $$a =='bb'
    
  2. 变量赋值与值传递

    $a = 1;
    $b = $a;	//值传递,将a值复制一份给b
    $c = &$a;	//引用传递,指向同一个值(内存空间)
    

常量

//使用define函数定义
define('PI',3.14,(false));	//最后的false表示大小写敏感,可省略;若定义为true则大小写不敏感

//使用const关键字定义
const PII = 3;

//使用define函数定义特殊常量
define('>_<','smile');

//使用常量
echo PI;

//用constant函数访问常量
echo constant('>_<');
  1. 常量名字不用$符号(会被系统当作变量)
  2. 常量名由字母、数字、下划线组成,不能以数字开头,通常以大写字母为主(与变量区分)
  3. 使用define方式定义的常量名中可以使用一些特殊字符,但访问时只能用constant函数
  4. 系统常量
    • PHP_VERSION:PHP版本号
    • __DIR__:当前php脚本所在绝对路径
    • __FILE__:当前php脚本所在绝对路径加文件名
    • __LINE__:当前语句(引用该常量的语句)所在行
    • __NAMESPACE__:当前所属命名空间
    • __CLASS__:当前所属的类
    • __METHOD__:当前所属的方法

数据类型与运算符

数据类型
  • 简单(基本)数据类型

    • 整型:int,4字节,表示整数,默认有符号

      $a = 120;	//十进制
      $b = 0b110;		//二进制
      $c = 0120;		//八进制
      $d = 0x12a;		//十六进制
      //输出时默认为十进制,进制间转换可用函数,如:dexbin()为十进制转二进制
      
    • 浮点型:float/double,8字节,表示小数或整型存不下的整数

    • 字符串型:string,大小按实际长度分配,表示字符串

    • 布尔类型:bool,表示true和false

  • 复合数据类型

    • 对象类型:object,存放对象
    • 数组类型:array,存放数组(一次性)
  • 特殊数据类型

    • 资源类型:resource,存放资源数据(PHP外部数据,如数据库、文件)
    • 空类型:NULL
  • 数据类型的转换

    • 其他类型转bool类型:除 0,“0”,NULL,空字符串 外,均为true
    • bool类型转数值:true为1,false为0
    • 字符串类型转数值:以字母开头的字符串永远为0;以数字开头的字符串,数值为遇到字母或第二个小数点前为止
    • 强制类型转换:(需转换的类型)+需转换的变量或表达式,不改变原变量的数据类型
  • 数据类型的判断

    • 通过以is_开头后跟数据类型的函数判断:is_类型(变量名)。函数返回值用var_dump函数查看。

    • 用var_dump函数查看:var_dump(变量名)

    • 用一组可获取或设定类型的函数

      echo gettype($a);	//获取数据类型
      settype($a,'int');	//设定数据类型,与强制类型转换不同,会改变原变量的数据类型
      
    •   empty();	//判断数据是否为空(NULL)或0,为空返回true,反之false
        isset();	//判断变量是否存在,存在返回true,反之false
      
运算符
  • 赋值、算术运算符:赋值运算"=",加法"+",减法"-",乘法"*",除法"/",取余运算"%",自加运算"++",自减运算"--"

  • 比较运算符

    • >,<,>=,<=,==,!=:大于,小于,大于等于,小于等于,等于,不等于

    • ===,!==:全等于(数据大小与类型都相同),不全等于(大小或类型不同)

      $a = '123';
      $b = 123;
      var_dump($a == $b);		//返回true
      var_dump($a === $b);		//返回false
      
  • 逻辑运算符:逻辑与"&&",逻辑或"||",逻辑非"!"

  • 连接运算符:".",将两个字符串拼接在一起;".=",字符串拼接后赋值给左边

  • 错误抑制符:"@",在可能出错的语句前加上@符号可关闭错误回显

  • 三目运算符:“表达式1 ? 表达式2 : 表达式3”,表达式1成立时执行表达式2,否则执行表达式3

  • 位运算符:"&“按位与,两个位都为1则为1;”|“按位或,两个位有一个为1则为1;”~“按位非,将位取反;”^“按位异或,两个位相同为0,不同为1;”<<“按位左移,右边补0;”>>",按位右移,左边补符号位内容

流程控制

  • if结构,while循环,du-while循环,for循环,switch结构与C语言大体相同

  • 流程控制替代语法:增强PHP+HTML的易读性与美观性

    例:打印九九乘法表

    <table border=1>
        <?php for($i = 1;$i < 10;$i++):		//for循环的大括号可由 : 与 endfor; 代替 ?>
        <tr>
            <?php for($j = 1;$j <= $i;$j++): ?>
            <td>
                <?php echo $i . ' * ' . $j . ' = '. $i * $j; ?>
            </td>
            <?php endfor;?>
        </tr>
        <?php endfor;?>
    </table>
    <!--	相似的结构还有if,switch,while,foreach	-->
    

文件包含

实质上是将文件中内容嵌入另一文件中相应位置

  1. 文件包含的两种方法

    • 向上包含:使用被包含文件中的数据
    • 向下包含:将本文件中的数据通过被包含文件中的方式显示
  2. 文件包含的四种形式

  • include , require:包含文件。语法:include ‘文件名’; 或 include(‘文件名’),文件不在当前目录时要用绝对路径(安全)或相对路径(高效),下同

    _注:绝对路径:本地绝对路径(从磁盘根目录开始)与网络绝对路径(相对于网站主机名对应的路径);相对路径:_相对于当前文件的路径,./ 表示当前目录,../表示上级目录

  • include_once , require_once:系统判断是否已包含文件,使得对应文件只包含一次

  1. include与require区别

    在包含文件出错时,include报错级别较低,后面代码会继续执行;require报错级别较高,代码会立即停止执行

函数

函数定义

function,一种语法结构,将一个代码块封装到一个结构中。

关键点:function关键字,函数名,参数,函数体,返回值

基本语法:

function 函数名([参数])
{
    //函数体
    return 结果;		//返回值
}

注意:

  1. 实参不能少于形参个数,多余参数函数不会使用。函数定义时可为形参初始化一个默认值,使得提供参数过少时函数可正常执行。例:

    function test($num1,$num2=0)		//有默认值的参数应放在最右边
    {
        echo $num1+$num2;		//传入参数不足时使用默认值0
    }
    
  2. 当函数想改变传入实参存储的值时,在定义函数时形参前加上"&"取地址符号,即地址传递

  3. return返回值可在函数中使用,也可以在文件中使用(包含文件的返回值),return后的语句不执行

  4. 如果有变量的值恰好为函数名,那么调用函数可以通过变量+(),如:$变量([参数])

作用域
  1. 全局变量:在函数外部定义的变量,函数体内不能直接访问,需要传值
  2. 局部变量:在函数内部定义的变量,只能在函数体内使用
  3. 超全局变量:一些预定义变量,如$GLOBALS等
  4. 在函数内使用global关键字定义的变量,在函数外部也能使用(系统自动在全局区定义相同变量,并将两个变量指向同一内存空间);若函数外部存在同名变量,系统自动将两个变量合并(直接指向外部全局变量内存空间)
  5. 静态变量:在函数中用static关键字定义的变量(在定义时应同时赋值),在函数调用结束后,内存空间不会被清空,在函数下次调用时仍可访问之前的数据,且不会被重复初始化
匿名函数

没有名字的函数

  • 基本语法:

    //定义基本匿名函数
    $func = function()
    {
        echo 'hello world';
    };		//此处应有分号
    //调用匿名函数
    $func()
    
  • 变量保存匿名函数,本质上得到的是一个对象(closure)

常用系统函数
  1. 有关输出的函数
    • print():类似于echo,返回值为1,可以不用括号
    • print_r():类似于var_dump,但不会输出数据类型,只会输出值(常用于打印数组)
  2. 有关时间的函数
    • date():按照指定格式格式化时间戳,没有指定格式将按照默认格式。具体参数
    • time():获取当前时间对应的时间戳(无参数)
    • microtime():获取微秒级别的时间
  3. 有关数学的函数
    • max(),min():分别返回参数中最大的值和最小的值
    • rand([参数1],参数2):得到一个在区间内的随机数(包括两个参数),参数1可不提供
    • mt_rand():与rand函数相同,但效率更高
    • round():四舍五入
    • ceil():向上取整,得到比参数大的最小整数
    • floor():向下取整,得到比参数小的最大整数
    • pow(参数1,参数2):得到参数1的参数2次方
    • abs():绝对值
    • sqrt():平方根
  4. 有关函数的函数
    • function_exists():判断指定函数名字是否在内存中存在
    • func_get_arg(n):在自定义函数中去获取第n-1 个参数
    • func_get_args():在自定义函数中去获取所有参数(返回一个数组)
    • func_num_args():获取当前自定义函数的参数数量

错误处理

错误代号

所有错误代码会被系统定义为系统常量,可以直接使用

  1. 系统错误
    • E_PARSE:编译错误
    • E_ERROR:fatal error,致命错误,会导致代码不能正确执行(出错的位置断掉)
    • E_WARNING:warning,警告错误,不会影响代码执行,但可能会得到意想不到的结果
    • E_NOTICE:通知错误,不会影响代码执行
  2. 用户错误:E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE,用户在使用自定义错误触发的时候会使用到(系统不会用到)
  3. 其他:E_ALL,代表所有错误,建议在开发环境中使用

所有以E开头的错误常量(代号)都存储在一个字节内,每种占据一个位,所以可以通过位运算来进行一些错误的控制,例:

排除通知级别的错误:E_ALL & ~E_NOTICE

只要警告和通知级别:E_WARNING | E_NOTICE

错误触发
  • 程序运行时触发:主要针对代码语法错误和运行时错误,由系统自动生成
  • 人为触发:人为使用对应判断代码来触发错误提示
    • trigger_error(提示内容,[错误级别]):人为触发错误,错误级别默认为E_USER_NOTICE,不影响下面执行

字符串

字符串定义
  1. 普通定义:使用单引号或双引号包裹

  2. 结构化定义

    nowdoc定义

    $str = <<<'ABC'	
    					//上边界符,可随意命名,后面不能有内容
    ****内容****
    ABC;		//下边界符必须顶格
    

    heredoc定义

    $str = <<<CBA
    ****内容****
    CBA;
    

注意:

  1. 普通定义中,使用单引号包裹的字符串只能识别 \’ 转义字符,其他转义字符原样输出;使用双引号包裹的字符串只识别不了 \’ 转义字符,其他转义字符按转义后形态输出——也就是说,双引号包裹的字符串中当 符 号 未 转 义 时 , 可 以 用 来 解 析 变 量 ( 前 提 是 系 统 能 区 分 变 量 与 其 后 面 的 字 符 串 , 而 不 是 连 在 一 起 , 比 如 符号未转义时,可以用来解析变量(前提是系统能区分变量与其后面的字符串,而不是连在一起,比如 a bcd与$abcd)
  2. 结构化定义中,边界符之间的内容全部原样输出
字符串长度问题
  1. 基本函数strlen():得到字符串的长度(单位:字节)
  2. 多字节字符串长度问题:中文在utf-8字符集下占3个字节
  3. 多字节字符串拓展模块:mbstring拓展
    • 字符串长度函数mb_strlen(string $str[,string $encoding]),第二个参数为指定字符集,未指定则为默认的ASCII
字符串相关函数
  • 转换函数:implode(),explode(),str_split()
  • 截取函数:trim(),ltrim(),rtrim(),substr(),strstr()
  • 大小转换函数:strtolower(),strtoupper(),ucfirst()
  • 查找函数:strpos(),strrpos()
  • 替换函数:str_replace()
  • 格式化函数:printf(),sprintf()
  • 其他:str_repeat(),str_shuffle()

数组

数组定义
  1. 使用array关键字(常用)

    $a = array(元素1,元素2,......);
    $b = array(下标=>元素,......);
    
  2. 使用中括号包裹数据

    $a = [元素1,元素2,......]
  3. 给变量加上中括号

    $a[] =;
    $a[下标] =;
    

注意:

  1. 下标可以为整数或字符串,可以混用
  2. 元素顺序以放入时顺序为准,与下标无关
  3. 特殊值下标:true——1,false——0,NULL——""
  4. php中数组元素没有类型限制,没有长度限制

PHP多维数组:即数组元素也是数组,建议不超过三维

数组遍历
foreach($数组 as [$下标 =>] $值){
    //输出函数
}
//例:
foreach($arr as $k => $v)
{
    echo $k , '==' , $v		//$k,$v为函数内变量
}
数组相关函数
  1. 排序函数:sort(),rsort(),arsort(),ksort(),shuffle()
  2. 指针函数:reset(),end(),next(),prev(),current(),key()
  3. 其他函数:count(),array_push(),array_pop(),array_shift(),array_unshift(),array_reverse(),in_array(),array_keys(),array_values()

(更新中……)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值