php基础1

PHP语言基础

  • php程序结构

    1
    2
    3
    4
    5
    a  <?php   echo  "标准结构";  ?>  //推荐写法
    b <? echo "简短风格"; ?> //需修改php.ini文件 short_open_tag=on
    c <% echo "asp风格" %> //需修改php.ini文件 asp_tags=on
    d <script language="php"></script>
    php的结束符 ?> 如果后面没有其他代码 可以省略
  • 程序的注释
    a /*多行注释*/ 不允许嵌套
    b //或# 单行注释 (php代码每一行都必须以分号;结束)

  • 变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    1.变量名以$开始
    2.变量的名称声明时一定要有意义
    3.以字母或下划线开头,不能以数字开头,不能有运算符号
    4.变量的名称区分大小写(驼峰式命名方式)
    a. var_dump()查看变量的类型和内容(数据结构)
    b. isset()判断变量是否存在 测试被设置为null的值或unset函数处理过的变量时 返回false
    empty()判断变量是否为空 "" "0" 0 NULL false array()
    尽量使用!empty() 判断是否存在
    d. unset()删除一个变量(销毁变量名) 断开变量名跟数据之间的引用关系
    e. gettype()获取变量类型 boolean integer double string array object resouce NULL
    f. 判断是否是某类型 is_int() is_bool() is_float() is_object() is_array() is_resource()
    is_null() is_numeric() is_callable() 是否是有效的函数名
    常见命名法
    1.驼峰命名法 首单词小写 其后每个单词首字母大写 $myName
    2.帕斯卡命名法 每个单词首字母大写 $MyName
    3.下划线分割法 每个单词小写,之间用下划线分割开 $my_name

    变量作用域
    1.全局变量 定义在函数之外,作用于整个PHP文件(内部使用必须用global声明)
    声明在调用之前,脚本结束(浏览器关闭)即释放
    2.局部变量 定义在函数之内或形参,只限于内部使用,在函数外不能被使用
    调用几次声明几次,释放(销毁)几次
    3.静态变量 用static声明,在函数第一次调用结束后仍保留变量值(存在),且不会消失
    静态变量的初始化只是在第一次遇到时被执行,以后不再执行初始化操作
    变量的生存周期
    即从变量被声明的那一刻起,直到程序脚本运行结束,变量随之释放
    可变变量
    使用一个变量的值作为另一个变量的名称
    $liubei='河北人';
    $laoda='liubei';
    $paihang="laoda";
    echo $laoda,$$laoda,$$$paihang; // liubei 河北人 河北人
    引用变量&
    1.只有变量才有地址,只有变量才能有引用 (引用相当于快捷方式)
    2.一个变量发生变化,另一个也跟着发生变化
    3.在使用unset()函数时,如果有引用关系,只是解除了这种引用关系,
    只删除一个名字,另一个还在
    4.如果两个变量是引用关系,一个变,另一个也变,但是如果给其中
    一个引用,不是普通的值,而是一个新的引用,则改变引用关系。
  • 八种原始数据类型

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    A:四种标量类型
    1.布尔型(boolean)
    特殊情况下的false:布尔值 false|整数值 0|浮点型 0.0|字符串 "" "0"| 数组 array[]|
    null值 所有其他值都被认为是true(包括任何资源)
    2.整型(integer)
    整型数可以用八进制,十进制,十六进制来表示 八进制以0开头,十六进制以0x开头
    十进制 123 1*100+2*10+3*1 八进制 0123 1*64+2*8+3*1 //23
    十六进制 0x123 1*256+2*16+3*1 //291
    二进制 是由216个字节表示 从右往左依次2的倍数 5 0000 0101
    最高位为1时不指定符号则为负数 ~5 //-6 <=(255-5-256)
    如果超出int所能表示的最大范围(-2147483648~+2147483647),将会被当做float型处理
    3.浮点型(float)
    浮点型两种格式 标准格式 3.1415 科学计数法 31415e-4
    浮点型的数值是一个近似值(不精确),应尽量避免浮点型之间的比较大小
    4.字符串(string)
    单个字符和多个字符都是字符串,字符串没有长度限制,在单引号中不能使用单引号,
    在双引号之间不能使用双引号(除非经过转义字符)
    B:两种复合类型
    1.数组(Array)
    2.对象(Object)
    C:两种特殊类型
    1.资源(Resource)
    2.Null 三种情况 a.没有赋任何值 b.被赋值为null c.被unset()函数处理过的变量
    伪类型 mixed $a 说明一个参数可以接受多种不同的类型
    number $a 说明一个参数可以是intfloat
    callback $a 说明一个参数可以是函数或一个对象的方法
    数据类型之间的转换
    1.强制转换
    getType(变量);获取变量的类型 强制转换时割舍小数位
    a.setType(变量,类型)----将原变量类型给转换了
    b.在变量使用时,前面加上类型符号(int)$str---在赋值时给了新变量一个新类型,
    原变量类型不变
    c.intval() floatval() strval()
    2.自动转换
    小类型自动转化为大类型 字符串会转换为整型或浮点型 布尔型和null会转换为
    整型或浮点型
    字符串转整型时,没有以数字开头时转为0,有数字或科学计数法开头时转为整型数字
    布尔型false会输出为空,true会输出为1
  • 常量的声明和使用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    1.常量一旦被声明,这个常量值就不会被改变,不能重新赋值,不能销毁 范围是全局的
    只支持4种标量数据类型(bool int float string) 不能使用$符
    2.使用函数define('常量名',常量值)声明 使用defined('常量名')判断是否被定义
    ex: define("HOST","www.baidu.com",true); defined('host')?1:0
    3.常量名称默认是区分大小写的,习惯上要全大写define(常量名,常量值,true or false)
    true(不区分大小写) false(默认区分大小写)
    4.获取常量值 直接使用常量名(不要加$) ROOT 使用constant('ROOT')函数获取
    ex: echo host; echo constant("host");
    5.预定义常量 __FILE__ 获取当前文件的路径(两个下划线) __LINE__获取当前行数
    PHP_VERSION 当前PHP服务器的版本
    引用赋值 $a=&$b 把$b的地址引用赋给$a $a改变$b也改变

PHP 运算符

  1. 算术运算符

    1
    2
    3
    4
    + - * / %求模的时候正负值取决于被除数的正负
    ++ -- 自增或自减 对于布尔值没有效果 对于字符串自增或自减属于升序或降序
    $a++或$a-- 先用(赋值)再加 结果不变 ++$a或--$a 先加再用(赋值) 结果加1或减1
    ++$a比$a++ 效率高 $a++ 会分配临时变量来保存 $a 然后再++
  2. 赋值运算符 把右边的值赋给左边的变量或常量

  3. 字符串运算符

    1
    2
    连接运算符      ".",    将左右两个字符串连接在一起
    连接赋值运算符 ".=" 将右边的字符串加到左边的字符串后面
  4. 比较运算符

    1
    2
    比较运算符的结果是一个布尔型 <  >  <=  >= ==
    不等于 != 恒等于 === 值和类型都相同 非恒等于!== 数值不相等或类型不相同
  5. 逻辑运算符

    1
    2
    3
    4
    5
    and或&& 逻辑与    当两边都为true时,才返回true,否则返回false
    or|| 逻辑或 只要有一个为true时,返回true,都为假时才返回false
    xor 逻辑异或 当两个操作数一个为真一个为假时,才返回true
    ! 逻辑非 单一操作数为true,则返回false
    逻辑运算的短路特性:defined("PI")||define("PI",3.14)
  6. 位运算符

    1
    2
    3
    4
    对二进制位从低位到高位对齐后进行计算
    & 按位与 | 按位或 ^ 按位异或 ~ 按位取反
    << 向左移n位 数字增大2的n次方(乘以2的n次方) >>向右移位 数字减小2倍(除以2)
    按位运算不会出现短路
  7. 三元运算符(条件运算符)

    1
    2
    表达式1?表达式2:表达式3
    如果表达式1为真则执行表达式2,表达式1为假则执行表达式3

PHP语句

程序的3种控制结构 顺序结构 分支(选择)结构 循环结构

  • 条件控制语句

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    if语句                                  if..else语句
    if(expr){ if(expr){
    statement; statement;
    }只有一条语句时,大括号可以省略 }else{
    statement;
    }
    elseif语句 switch...case语句
    if(expr1){ switch(变量){
    statement1; case1:statement1;
    }elseif(expr2){ break;
    statement2; case2:statement2;
    }elseif{ break;
    statement3; case3:statement3;
    }else{ break;
    statement4; default:statement;
    } }
    a.switch(变量) 变量的类型只能是整型或字符串
    b.switch case 适合单个值匹配 elseif 适合判断范围时使用
    c.break是退出switch使用的,如果需要同时匹配多个值可以使用多个case而不加break
  • 循环控制语句

    1
    2
    3
    4
    5
    6
      while循环语句            do...while循环语句       for语句
    while(expr){ do{ for(expr1;expr2;expr3){
    statement; statement; statement;
    }//条件为真假时用while }while(expr); }expr1变量的初始赋值,expr2为循
    先执行表达式,表达式为 先执行循环体,在判断表 环条件,expr3为变量递增或递减
    true时,才执行循环体 达式,成立再执行循环体 用于已知循环次数多条件循环操作
  • 跳转控制语句
    break语句 break n; 指定要跳出几层循环 结束循环结构
    continue语句 continue n; 指定要跳出几层循环 只能终止本次循环

  • exit() die()函数是exit()函数的别名 输出一条信息 并退出当前脚本

PHP函数的使用

函数是一段完成指定任务的已命名代码块

  • 自定义函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function function_name($arg1,$arg2){
    fun_body;
    return arg_n;
    }
    function_name();//函数的调用可以在函数前也可以在函数后面
    1.函数名要有意义,函数名不区分大小写,不能重复定义,和保留字相同的名称不能使用
    2.被传入的参数称为实参,而函数定义的参数成为形参,参数可有可无,可以有多个","用逗号分隔
    3.函数返回值return后面紧跟要返回的一个值 不会直接输出 如果不写return则返回NULL
    a.可以终止函数后面不执行 b.返回一个结果
    4.判断函数是否存在 function_exists()
    函数的参数的传递方式
    1.按值传递方式 实参的值不会发生改变
    2.按引用传递方式 将实参的内存地址传递给形参,当形参在函数中有任何改变时,实参的值也
    会发生变化.如果形参是引用参数,调用函数时,必须传一个变量不能是数值
    3.默认参数 默认参数必须放在非默认参数的后面 (实参和形参是按顺序对应传递数据的)
    4.不定参数 func_get_args() 将传递给脚本函数的所有参数当作数组返回
    PHP函数对自身的调用成为递归调用
    回调函数: 指调用函数时,将另一个函数作为参数传递给调用的函数
    变量函数:如果将一个函数名称赋给一个变量 在变量后加上()就会调用对应的函数
    function add(){ } $var="add" $var()
  • 系统函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    引用文件(包含文件)
    includerequire语句的区别
    1.include调用外部文件只有程序执行到该语句才调用
    require只要程序一执行,就会立刻调用文件
    2.调用文件时,若没找到require语句会输出严重错误,立即终止脚本的处理.
    include则会输出一个警告,不会终止脚本的运行,后面的可以继续执行
    include_oncerequire_once的区别
    都是确保被包含文件只能被包含一次.避免因多次包含而导致函数的重复定义而产生的错误
    不同的是在调用外部文件发生错误时,include_once产生一个警告而require_once则导致一个
    致命错误
  • 常用数学函数

    1
    2
    abs()  绝对值      pow(n,m) n的m次方    max() 求两个以上数的最大值
    min() 求两个以上数的最小值 rand(n,m) 返回n和m之间的随机数

PHP日期和时间

  • 更改PHP语言中的时区设置

    1
    2
    3
    1.修改php.ini文件中的设置,将date.timezone="Asia/Shanghai",重启Apache服务器
    2.在程序中添加如下函数 date_default_timezone_get()获取当前时区
    date_default_timezone_set(PRC或Asia/Chongqing或Asia/Shanghai)
  • 获取当前时间的时间戳

    1
    2
    3
    echo time()."<br />";          //返回时间戳 1470457489
    echo microtime()."<br />"; //0.11247900 1470457489
    echo microtime(true)."<br />"; //1470457661.9925微秒的时间戳 计算程序运行的时间
  • 将时间戳格式化

    1
    2
    3
    4
    date('Y-m-d H:i:s',time());  date("Y年m月d日 H:i:s",time());
    Y 四位完整的年份 m 表示月份 d 月份中的第几天有前导0
    l 英文格式星期 N 星期中的第几天
    H 24小时格式有前导0 i 有前导0的分钟数 s 有前导0的秒数
  • 获取指定日期的时间戳

    1
    2
    3
    4
    5
    6
    7
    mktime(int hour,int minute,int second,int mounth,int day,int year);
    //取得指定日期的时间戳
    ex: echo mktime(14,35,20,11,27,2016)."<br />"; //1470381856
    strtotime();获取英文格式日期时间字符串的时间戳(相对于当前时间)
    //将英文文本的日期时间转化为unix时间戳
    ex: strtotime('now'); strtotime('now -1 day') 前一天的时间戳
    checkdate(int month,int day,int year)检验日期的有效性

PHP图像与图形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
输出图像必须加header('Content-type:image/gif'),屏蔽notice错误(变量未声明导致乱码)
1.创建资源(画布)
$im=imagecreatetruecolor(300,300)
2.设置颜色及填充背景色
$co=imagecolorallocate($im,255,255,255)一般为白色
imagefill($im,0,0,$co)(按是否需要背景色)
3.设置绘制图形的颜色
$red=imagecolorallocate($im,255,0,0)
4.绘制图像或在图像上写字
imageline($im,100,100,200,200,$red)
5.输出或保存图像(iamgegif($im,'image/meizi.gif'))
imagegif($im)
6.释放资源
imagedestroy($im)
imagefill($im,0,0,$co) 区域填充 imagesetpixel($im,100,100,$co) 画一个点
imageline($im,100,100,200,200,$co) 画一条线段
imagerectangle($im,100,100,200,200,$co) 画一个矩形(填充的矩形imagerfilledectangle)
imageellipse($im,100,100,100,150,$co) 画一个椭圆(填充的椭圆imagefilledellipse)
imagearc($im,100,100,180,180,0,100,$co) 画一个弧形
imagestring($im,5,50,150,'hello world',$co) 水平画一个字符串(垂直画imagestringup)
imagettftext($im,字体大小,角度,80,90,$co,字体路径,'文字') 用自定义字体输出文字

PHP异常处理

1
2
3
4
5
6
7
8
9
10
11
12
13
1.语法错误  2.运行时错误 3.逻辑错误
错误报告及设置级别
1.Notice注意级别 2.Warning警告级别 3.Fatal error严重错误级别
屏蔽notice错误 error_reporting(E_ALL^E_NOTICE)
用户自定义错误格式处理函数
set_error_handler("myerrorfun");
$mess="";
function myerrorfun($error_type,$error_message,$error_file,$error_line){
global $mess;
$mess.="发生错误级别为{$error_type}类型,错误消息{$error_message},在文件
{$error_file}中,第{$error_line}行。"
}
echo $mess;

PHP中的会话控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Cookie是一种由服务器端发送给客户端的片段信息,存储在客户端浏览器的内存或硬盘
(就好比商场的会员卡,保存在用户手中,在期限内都可以打折)
设置cookie
setcookie($name,[$value],[$expire],[$path],[$domain],[$source])
setcookie(cookie名称,要存储的值,生存期限,存储路径,指定域名下有效,协议)
协议默认为0(http),1(https)
setcookie(‘username’,’Tom’,time()+3600*24*7) 通常只需要设置前三个参数
设置数组形式的cookie应用
setcookie(‘user[username]’,’Tom’,time()+3600*24*7)
setcookie(‘user[userpwd]’,’Tom’,time()+3600*24*7) 注意数组的键不要加引号
读取cookie
浏览器会将所有的cookie信息存储在$_COOKIE的全局数组中,都去的时候则通过
$_COOKIE[‘username’]或$_COOKIE[‘user’][‘username’]获取
删除cookie
a.将指定的cookie名称的值赋空
setCookie(‘username’) 值为空,但名称依然存在$_COOKIE数组中
b.将指定cookie设为过期状态
setcookie(‘username’,’’,time()-1) 删除指定的cookie值,不会存在$_COOKIE中
注意:不能用unset函数 删除cookie值
session
session是将数据存放在服务器中,在为web系统中,指用户与web系统的对话过程,即从打开浏览器登录到关闭浏览器的这段时间 (就好比会员卡的卡号由商场保存)
在session中,在客户端保存由服务器为用户创建的sessionId,而在服务器端保存变量的值
sessionId保存在客户端的cookie中,如果阻止cookie,则可以讲sessionID保存在地址栏url
中,通过web请求,把sessionId发送给服务器,然后通过sessionId获取session值,由32
十六进制数组成的字符串
session的声明与使用
开启会话 session_start() 作用 开启一个会话,返回已经存在的会话
在使用session_start()之前不能有任何的输出,空格或空行都不行
session的注册与读取
a Session_start() //开启session
b $_SESSION[‘username’] = ‘Tom’ //注册session变量并赋值
读取同样需要先开启session_start() 然后在读取$name=$_SESSION[‘username’]
通过session_name()获取session名称 session_id() 获取sessionId
注销变量与销毁session
删除session中的单个变量
Unset($_SESSION[‘username’]) 不要使用unset($_SESSION) 删除整个$_SESSION数组
销毁session session_destroy()
删除$_SESSION中所有的变量 $_SESSION=array()
在cookie中删除sessionId setcookie(session_name,’’,time()-1,’/’)
传递sessionId
通过URL传递sessionId <a href=”index.php?{session_name()}={session_id()}”>传递</a>

PHP正则表达式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
正则表达式就是一个匹配模式的字符串,必须在函数中使用
正则表达式的组成
1.定界符 多种都可以常用为("/../")除了字母、数字、\以外的字符
2.原子 最小的一个匹配单位(放在定界符内)必须有一个
3.元字符 不能单独使用,修饰原子,用来扩展原子功能和限定功能
4.模式修正符 对模式(正则)修正,作用整个表达式(写在定界符外)

原子:打印字符(a-z A-Z 0-9%)和非打印字符
转义字符:A 可以将有意义的字符转义成普通字符 \^
B 可以将没有意义的字符转成有意义的原子 \t
预定义字符集 \D非数字字符 \d数字 \W非单词字符 \w单词字符 \S非空白字符 \s空白字符
自定义原子表 [13579] [a-zA-Z]

元字符: * 匹配前面的字符(原子)出现零次、一次或多次
+ 匹配前面的字符出现1次或多次,至少出现一次
? 匹配前面的字符出现零次或1次,不可出现多次
{n} 匹配前面的字符只能出现n次
{n,} 匹配前面的字符最少出现n次
{n,m}匹配前面的字符最少出现n次,最多出现m次
| 表示或的关系,它两边的原子只要有一个出现就可以
^或\A 表示必须以什么开始,必须写在最前面
$或\z 表示必须以什么结尾,必须写在定界符最后面
() 改变限定符的作用范围 子模式 反向引用
[] 只能匹配单个字符 - 表示字符的范围
. 可以匹配出换行符以外的任意一个字符
[^] 表示排除的意思
模式修正符
i 修正正则表达式不区分大小写
m 修正正则表达式可视为多行
s 可以使 . 匹配换行符
x 可以使正则表达式忽略空白
g 查找所有可能的匹配结果可以是多个
preg_match()正则查找 preg_split()正则分割 preg_replace()正则替换
-------------本文结束感谢您的阅读-------------
0%