php基础学习大全

文章目录

    • 第一章:PHP语言基础
      • 1.1 PHP的标记风格
      • 1.3 PHP的数据类型
        • 1.3.1 标量数据类型
        • 1.3.2 复合数据类型
        • 1.3.3 数据类型转换
        • 1.3.4 检测数据类型
      • 1.4 PHP常量
        • 1.4.1 声明和使用常量
        • 1.4.2 预定义常量
      • 1.5 PHP变量
        • 1.5.1 变量声明及使用
        • 1.5.2 变量作用域
        • 1.5.3 可变变量
        • 1.5.4 预定义变量
      • 1.6 PHP运算符
      • 1.7 PHP函数
    • 第二章:流程控制语句
      • 2.1 if系列语句
      • 2.2 switch语句
      • 2.3 while与do……while语句
      • 2.4 for语句
      • 2.5 foreach语句
      • 2.6 跳转语句
    • 第三章:字符串操作
      • 3.1 字符串的定义方法
        • 3.1.1 单引号与双引号的区别
        • 3.1.2 使用定界符定义字符串
      • 3.2 字符串操作
        • 3.2.1 去除字符串首尾空格和特殊字符
        • 3.2.2 转义、还原字符串数据
        • 3.2.3 获取字符串长度
        • 3.2.4 截取字符串
        • 3.2.5 比较字符串
        • 3.2.6 检索字符串
        • 3.2.7 替换字符串
        • 3.2.8 格式化字符串
        • 3.2.9 分割字符串(及print_r与echo的区别)
        • 3.2.10 合并字符串
    • 第四章:正则表达式
      • 4.1 语法规则
      • 4.2 函数
    • 第五章:数组
      • 5.1 数组的类型
        • 5.1.1 数字索引数组
        • 5.1.2 关联数组
      • 5.2 输出数组
      • 5.3 二维数组
      • 5.4 遍历数组
        • 5.4.1 foreach遍历
        • 5.4.2 list函数遍历
      • 5.5 字符串与数组的转换
        • 5.5.1 字符串转数组
        • 5.5.2 数组转字符串
      • 5.6 统计数组元素个数
      • 5.8 获取数组中最后一个元素
      • 5.9 向数组中添加元素
      • 5.10 删除数组中重复的元素
    • 第六章:PHP与Web页面交互
      • 6.1 表单
        • 6.1.1 form标签属性
        • 6.1.2 其它
      • 6.2 PHP参数传递的常用方法
        • 6.2.1 \$\_POST[]和\$\_GET[]全局变量
        • 6.2.2 \$\_SESSION[]变量
        • 6.2.3 获取参数值
    • 第七章:PHP与JavaScript交互
      • 7.1 JavaScript基础
    • 第八章:PHP与MySQL
      • 8.1 操作MySQL数据库
        • 8.1.1 连接
        • 8.1.2 选择数据库
        • 8.1.3 执行SQL语句
        • 8.1.4 释放内存
        • 8.1.5 关闭连接
        • 8.1.2 选择数据库
        • 8.1.3 执行SQL语句
        • 8.1.4 释放内存
        • 8.1.5 关闭连接

第一章:PHP语言基础

1.1 PHP的标记风格

  • XML风格

    
        echo "XML风格的标记";
    ?>
    

    推荐使用此种标记,服务器不能禁用,在XML和XHTML中都可以使用

  • 脚本风格

    <script language="php">
        echo "脚本风格的标记";
    </script>
    
  • 简短风格

     echo "简短风格标记"; ?>
    
  • ASP风格

    <%
        echo "ASP风格标记";
    %>
    

    简短风格和ASP风格标记的使用,需要对php.ini进行配置,将里面的short_open_tagasp_tags都设置为on,然后重启Apache服务器即可

###1.2 PHP的注释


    /*You are
      so
      cute */
    echo "666";  //输出666
	echo "520";  #输出520
?>	

多行注释: /* */(类似于C++)

单行注释: //#

注意:单行注释里不要出现“ ?> ”的标志,这样会让解释器认成php脚本结束的标志

1.3 PHP的数据类型

1.3.1 标量数据类型

标量数据类型是数据结构中最基本的数据单元,只能存储一个数据

类型 描述
布尔型 只有true和false两个值
字符串型 单个或连续的字符集合
整型 整数类型,正数或负数都可
浮点型 存储有小数位的数字

1.3.2 复合数据类型

  • 数组(array)

    
    	//三种创建方式
        //第一种:
        $array_name = array('value1', 'value2'......);
        //第二种:
        $array_name[key] = 'value';
    	//第三种:
    	$array_name = array(key1 => value1, key2 => value2......);
    ?>
    
  • 对象(object)

    对象是类的实例

1.3.3 数据类型转换

  • 自动转换

    • bool型与数值型运算:true转为整数1,false转为整数0
    • 字符串型与数值型运算:若字符串是以数字开头,则转换为开头的那个数字,否则转换为0
    • 字符串拼接时:true变为字符串’1’,false和null变为空字符串’’,整数和浮点数会转换成字符串型数据
    • 逻辑运算:0,0.0, ‘’,NULL,‘0’,空数组都会被转为false
  • 强制转换

    转换符 功能 举例
    (boolean)或(bool) 转布尔型 $num = (bool)​$num、$num = (boolean)$num
    (string) 转字符串型 $num = (string)$num
    (int)或(integer) 转整型 $num = (int)$num、$num = (integer)$num
    (float)、(double)、(real) 转浮点型 $num = (float)$num
    (array) 转数组 $num = (array)$num

    **bool settype(var, type)**可以帮助完成类型转换,如:

    $num = '3.14phporg';
    settype($num, 'int');
    echo $num;
    

    此段代码输出结果为3

    此外,"echo settype($num, ‘int’);"的输出结果为1,因为settype函数的返回值是个bool类型,如果转换成功,结果就为true,输出值就为1

    还有一些函数:

    函数 功能
    intval(var) 转整型
    floatval(var)、doubleval(var) 转浮点型
    boolval(var) 转布尔型

1.3.4 检测数据类型

函数 功能
is_bool(var) 检测变量是否为布尔型
is_string(var) 检测变量是否为字符串
is_float(var)、is_double(var) 检测变量是否为浮点型
is_integer(var)或is_int(var) 检测变量是否为整型
is_null(var) 检测变量是否为空(NULL)
is_array(var) 检测变量是否为数组类型
is_numeric(var) 检测变量是否为数字或由数字组成的字符串

1.4 PHP常量

1.4.1 声明和使用常量

常量值被定义后,在脚本的其他任何地方都不能改变。PHP中使用==define()==函数来定义常量,该函数语法如下:

define(string constant_name, mixed value, case_sensitive = false)

参数 描述
constant_name 必选参数,常量的名称,即标识符
value 必选参数,常量的值
case_sensitive 可选参数,指定是否大小写敏感,设定为true则表示不敏感

其他关于常量的函数:

函数 功能
constant(constant_name) constant_name为常量名,如何该常量存在则获取常量值,否则报错
defined(constant_name) 判断常量是否被定义,若被定义则返回true

例子:


    define('AGE', '年龄18');
    echo AGE.'
'
; //输出常量AGE的值 echo Age.'
'
; //默认大小写敏感,不存在常量Age,输出字符串'Age' define('NAME', '小明', true);//true表示大小写不敏感 echo NAME.'
'
; echo name.'
'
; //两者输出结果相同 echo constant('AGE').'
'
; $age = 'AGE'; echo constant($age).'
'
; echo constant('aGe').'
'
; //常量不存在,报错 echo defined($age); ?>

运行结果:

年龄18
Age
小明
小明
年龄18
年龄18
Warning: constant(): Couldn’t find constant aGe in …
1

1.4.2 预定义常量

PHP里有很多已经定义、常量,我们可以利用这些常量来获取PHP中的信息

常量名 功能
__FILE__ PHP程序文件名
__LINE__ PHP程序行数
PHP_VERSION PHP程序的版本
PHP_OS 执行PHP解析器的操作系统
TRUE 该常量是一个真值(true)
FALSE 该常量是一个假值(false)
NULL 一个空值(null)
E_ERROR 该常量指到最近的错误处
E_WARNING 该常量指到最近的警告处
E_PARSE 该常量指到解析语法有潜在问题处
E_NOTICE 该常量为发生不寻常处的提示

1.5 PHP变量

1.5.1 变量声明及使用

变量名由数字、字母或下划线组成,但不能以数字开头。除此之外的其他字符也不能够出现在变量名中。变量是由"$"符加变量名组成。


    $age_666 = 'my age is 18!';    //合法变量名
	$123_flag = 'valid name';   //以数字开头,非法变量名
	$age@^ = 'vaild string';    //含有非法字符@、^,非法变量名
?>

变量赋值:


    $string1 = 'value1';    //变量声明时直接赋值
	$string2 = $string1;    //变量间传值
	$string3 = &$string1;   //引用传值
?>

引用赋值使得多个变量访问同一内存,其中一个变量值改变时,其它值也改变

1.5.2 变量作用域

作用域 描述
局部变量 函数内部定义的变量,只在该函数内部有效
全局变量 被定义在所有函数以外的变量,作用于整个PHP文件,但在用户自定义函数内部是不可用的。可以使用global关键字使得该变量可以在自定义函数内使用
静态变量 能在函数调用结束后仍然保留变量值,使用static关键字来声明

1.5.3 可变变量

看一段例子:


    $a = 'b';
	$b = '我喜欢PHP';
	echo $a.'
'
; echo $$a; ?>

第一输出的是$a​的值’b’,这没有问题。第二个输出的是’$$a’的值,首先,$a的值为’b’,$$a将$a用b替换,就变成了$b,所以$$a输出的是$b的值。

1.5.4 预定义变量

PHP提供了很多非常实用的预定义变量, 通过这些预定义变量可以获取用户会话、 用户操作系统 的环境和本地操作系统的环境等信息。下表列举出了几个。

变量名 描述
$_COOKE 通过HTTPCook.ie传递到脚本的信息,这些cookie多数是由执行PHP脚本时 通过setcookie()函数设置的
$_ SESSION 包含与所有会话变量有关的信息。$_SESSION变量主要应用于会话控制和页 面之间值的传递
$_POST 包含通过POST方法传递的参数的相关信息。牛要用千获取通过POST方认提交的数据
$_GET 包含通过GET方法传递的 参数的 相关信息。主荌用于获取通过GET方法提交 的数据

1.6 PHP运算符

  • 算术运算符

    符号 描述
    + 加法运算符,$a+$b
    - 减法运算符,$a-$b
    * 乘法运算符,$a*$b
    / 除法运算符,整除,$a/$b
    % 取余运算符,$a%$b
  • 字符串运算

    '.'可以连接两个字符串

    
    $n = '3.14abc';
    $m = 2;
    echo $n.$m.'
    '
    ; echo $m.$n.'
    '
    ; echo ($m+$n).'
    '
    ; echo ($n+$m).'
    '
    ; ?>

    输出结果:

    3.14abc2
    23.14abc
    5.14
    5.14

  • 赋值运算符

    如:$a += $b的意思是$a = $a + $b。此外,还有类似的-=、*=、/=、.=、%=

  • 位运算符

    符号 作用
    & 按位与
    | 按位或
    ^ 按位异或
    ~ 按位取反
    << 向左移位
    >> 向右移位
  • 逻辑运算符

    符号 作用
    &&或and 逻辑与
    ||或or 逻辑或
    xor 逻辑异或(用于判断一真一假的情形)
    逻辑非
  • 条件运算符

    "? :“就是条件运算符,用法如"echo (5>2) ? 5 : 2;”,如果’?‘前面的表达式为真,输出’:‘前的内容,否则输出’:'后的内容

  • 比较运算符

    运算符 名称 描述
    x == y 等于 如果x等于y,返回true(5=='5’成立)
    x === y 绝对等于 如果 x 等于 y,且它们类型相同,则返回 true(5==='5’不成立)
    x != y 不等于 如果 x 不等于 y,则返回 true
    x !== y 绝对不等于 如果 x 不等于 y,或它们类型不相同,则返回 true

1.7 PHP函数

  • 定义

    function 函数名( 参数 ){

    函数体;

    }

  • 传递参数

    
        function aaa($m){
           
        $m = $m*5 + 10;
        echo $m.'
    '
    ; } $m = 10; aaa($m); //按值传参,不改变原参数的值 echo $m; ?> /* 输出结果:60,10 */ function aaa(&$m){ $m = $m*5 + 10; echo $m.'
    '
    ; } $m = 10; aaa($m); //引用传参,改变原参数的值 echo $m; ?> //结果:60,60

    默认参数:

    
         function aaa($m, $t=5){
           
        $m = $m*5 + 10 + t;
        echo $m.'
    '
    ; } $m = 10; aaa($m); //没传t值,默认为5,输出65 aaa($m, 10); //t值为10,输出70 echo $m; ?>

    注意:默认参数必须放在非默认参数右侧,从PHP5开始,默认值也可以通过引用传递

  • 变量函数

    PHP很有意思的一点就是这个变量函数

    
        function aaa(){
           
        echo 'my name ';
    	}
    	
    	function bbb(){
           
            echo 'is ';
        }
    
    	function ccc($name){
           
            echo $name;
        }
    	$func = 'aaa';    //$func值与函数名'aaa'相同
    	$func();          //调用aaa函数
    	$func = 'bbb';    //$func值与函数名'bbb'相同
    	$func();          //调用bbb函数
    	$func = 'ccc';    //$func值与函数名'ccc'相同
    	$func('scgg');    //调用ccc函数
    ?>
    

    输出结果为:

    my name is scgg

第二章:流程控制语句

2.1 if系列语句

用一个例子描述,假如小明的考试成绩为*$grade*,成绩低于60分为不及格,60~79为及格,80~89为良好,90~100为优秀,那么我们可以通过if语句来判断小明所处的等级。


    $grade = rand(0,100);   //rand(a, b)函数可以随机生成a到b范围内的一个数
	if ($grade < 60)
    {
     
        echo '小明成绩为'.$grade.',不及格,要补考';
    }
	else if ($grade >= 60 and $grade <= 79)
    {
     
        echo '小明成绩为'.$grade.',及格了';
    }
	else if ($grade >= 80 and $grade <= 89)
    {
     
        echo '小明成绩为'.$grade.',良好';
    }
    else
    {
     
        echo '小明成绩为'.$grade.',非常优秀!';
    }
?>

执行结果为:

第一次运行结果:

小明成绩为33,不及格,要补考

第二次运行结果:

小明成绩为76,及格了

第三次运行结果:

小明成绩为100,非常优秀!

2.2 switch语句

按照上例中的等级划分:


    $class = array('不及格', '及格', '良好', '优秀');
    $num = rand(0,3);
    switch($class[$num])
    {
     
        case '不及格':
            echo '等级为'.$class[$num].',小明成绩低于60分';
            break;
        case '及格':
            echo '等级为'.$class[$num].',小明成绩在60~79之间';
            break;
        case '良好':
            echo '等级为'.$class[$num].',小明成绩在80~89之间';
            break;
        case '优秀':
            echo '等级为'.$class[$num].',小明成绩高于90分';
    }
?>

一次运行结果:

等级为优秀,小明成绩高于90分

2.3 while与do……while语句

打印出1~20内的所有偶数


    //while语句
    $num = 1;
	echo '20内的所有偶数为:';
	while ($num <= 10)
    {
     
        if ($num % 2 == 0)
            echo ' '.$num;
        $num++;
    }
?>

结果:

20内的所有偶数为: 2 4 6 8 10

?php
    //while语句
    $num = 1;
    echo '20内的所有偶数为:';
    do
    {
     
        if ($num % 2 == 0)
            echo ' '.$num;
        $num++;
    }
    while ($num <= 10);
?>

结果:

20内的所有偶数为: 2 4 6 8 10

2.4 for语句

输出10的阶乘


    $sum = 1;
   for($num = 1; $num <= 10; $num++)
   {
     
       $sum *= $num;
   }
   echo '10的阶乘为'.$sum;
?>

结果:

10的阶乘为3628800

2.5 foreach语句

PHP5中foreach语句支持对数组和对象的遍历,且只支持这些遍历。


   $string_1 = array('my', 'age', 'is', '20');
   $string_2 = array('1'=>'are', '2'=>'you', '3'=>'ok!');
   foreach($string_1 as $value) //从头到尾遍历数组,值赋给$value
   {
     
       echo $value.' ';
   }
   echo '
'
; foreach ($string_2 as $key => $value) //下标赋值给$key,值赋给$value { echo $key.':'.$value.' '; } echo '
'
; foreach ($string_1 as $key => $value) { echo $key.':'.$value.' '; } ?>

运行结果:

my age is 20
1:are 2:you 3:ok!
0:my 1:age 2:is 3:20

2.6 跳转语句

语句 作用
continue 跳过本次循环剩余步骤,直接进入下次循环
break 跳出循环体

第三章:字符串操作

3.1 字符串的定义方法

3.1.1 单引号与双引号的区别


    $text_1 = 'Hello, world!';
    $text_2 = "Hello, world!";
    echo $text_1.'
'
; echo $text_2.'
'
; $str1 = 'he said >>> $text_1'; //单引号里$text_1不会被解析,被当成普通字符串处理 $str2 = "he said >>> $text_1"; //双引号里$text_1会被解析器解析,会变为'Hello, world!' echo $str1.'
'
; echo $str2.'
'
; ?>

结果:

Hello, world!
Hello, world!
he said >>> $text_1
he said >>> Hello, world!

故两者区别为:

单引号 里面的内容不会被解析器解析,原样输出,所见即所得
双引号 里面的内容会被解析,如果有变量,则替换为该变量的值

3.1.2 使用定界符定义字符串

格式如下:

<<

格式化文本

str

'<<<'是关键字,必须使用;'str’是用户自定义的定界符,用于标识文本的起始和结尾。

示例:


    $str = '定界符,';
    echo <<<border
    你学会$str 了吗?
border;
?>

结果:

你学会定界符, 了吗?

注意:在上面的代码中, 值得注意的是, 在定界符内不允许添加注释, 否则程序将运行出错。 结束标识符所在的行不能包含任何其他字符, 而且不能被缩进, 在标识符分号前后不能有任何空白字符或制表符。

3.2 字符串操作

3.2.1 去除字符串首尾空格和特殊字符

函数 描述
trim(字符串, 字符) 去除字符串里的指定字符。若字符选项为空,则去除字符串两端的空格
ltrim(字符串, 字符) 去除字符串左端的指定字符,若无指定字符,则去除左端的空格
rtrim(字符串, 字符) 去除字符串右端的指定字符,若无指定字符,则去除右端的空格

3.2.2 转义、还原字符串数据

  • **addslashes(str)**函数

    str为需要转义的字符串,该函数会在单引号双引号反斜线NULL字符前自动添加反斜线进行转义

  • **stripslashes(str)**函数

    返回值为一个去除转义斜线后的字符串

例子:


    $sql = "select * from user where id = '666'";
    echo '转义后为:'.addslashes($sql);
    echo '
'
; $sql = addslashes($sql); echo '反转义后为:'.stripslashes($sql); ?>

结果:

转义后为:select * from user where id = ‘666’
反转义后为:select * from user where id = ‘666’

  • **addcslashes(string, char)**函数

    对字符串string里的指定字符char进行转义,其他非字母数字且ASCU码低于 32 以及高于126 的字符均转换成八进制表示。

  • **stripcslashes(str)**函数

    用于还原addcslashes函数转义的字符串。

例子:


    $sql = "我是scgg, hello!";
    echo '转义后为:'.addcslashes($sql,$sql);
    echo '
'
; $sql = addcslashes($sql,$sql); echo '反转义后为:'.stripcslashes($sql); ?>

结果:

转义后为:\346\210\221\346\230\257\s\c\g\g,\ \h\e\l\l\o!
反转义后为:我是scgg, hello!

3.2.3 获取字符串长度

  • **strlen(str)**函数获取指定字符串str的长度(汉字占两个字符)

3.2.4 截取字符串

语法:

string substr(str, start, length)

参数 描述
str 指定字符串对象
start 指定开始截取字符串的位置。 如果参数start为负数, 则从字符串的末尾开始截取,字符串第一个字符位置为0
length 指定从开始位置截取字符的个数, 如果length为负数, 则表示取到倒数第length个字符

例子:


    echo substr("She is a well-read girl", 0);     
    echo "
"
; echo substr("She is a well-read girl", 4, 14); echo "
"
; echo substr("She is a well-read girl", -4, 4); echo "
"
; echo substr("She is a well-read girl", 0,-4); ?>

结果:

She is a well-read girl
is a well-read
girl
She is a well-read

3.2.5 比较字符串

  • 按字节进行字符串的比较

    按字节进行字符串比较的方法有两种, 分别是 strcmp()和 strcasecmp()函数, 通过这两个函数即可 实现对字符串进行按字节的比较。这两种函数的区别是 strcmp()函数区分字符的大小写,而 strcasecmp() 函数不区分字符的大小写。 由于这两个函数的实现方法基本相同, 这里只介绍 strcmp()函数。

    int strcmp (string str1, string str2)

    str1 和 str2 指定要比较的两个字符串。 如果 strl 和 str2 相等, 则返回 0; 如果 str1大于 str2, 则返回值大于 0; 如果 str1小于 str2, 则返回值小于 0。

  • 按自然排序法进行字符串的比较

    int strnatcmp (string str1, string str2)

    如果字符串str1和str2相等,则返回0;如果str1大于str2则返回值大于0;如果str1小于str2, 则返回值小于0。strnatcmp()函数区分字母大小写。

注意:在自然运算法则中,2比10小,而在计算机序列中,10比2小,因为"10’'中的笫一个数字是’1’它小于2。

例子:


    $str1 = 'str2.jpg';
    $str2 = 'str100.jpg';
    $str3 = 'php';
    $str4 = 'PHP';
    echo strcmp($str1, $str2).'
'
; echo strnatcmp($str1, $str2).'
'
; echo strcmp($str3, $str4).'
'
; echo strnatcmp($str3, $str4).'
'
; ?>

结果:

1
-1
1
1

  • 指定从源字符串的位置开始比较

    int strncmp(string str1 ,string str2,int len)

    此函数用于比较前len个字符,其中len为指定参与比较的字符的数量,此函数区分大小写

3.2.6 检索字符串

  • strstr(string, needle)

    参数 描述
    string 必要参数, 指定从哪个字符串中进行搜索
    needle 必要参数, 指定搜索的对象。 如果该参数是 个数值, 那么将搜索与这个数值的 ASCII 值相匹配的字符

    例子:

    
        $str1 = 'str2.jpg';
        $str2 = strstr($str1,'.');
        $str3 = strstr($str1,'2');
        echo $str2.'
    '
    .$str3; ?>

    结果:

    .jpg
    2.jpg

    strrchr()函数与其正好相反, 该函数是从字符串后序的位置开始检索子串(子字符串)的,结果与strstr()相同

  • 使用**substr_ count(str, char)**函数检索子串出现的次数

3.2.7 替换字符串

  • **str_ireplace()**函数

    str_ireplace (search, replace, subject [, count])

    参数 描述
    search 要搜索的值, 可以使用array来提供多个值
    replace 指定替换原字符的值
    subject 要被搜索和替换的字符串或数组
    count 执行替换的数量
  • **substr_replace()**函数

    substr_replace(string, repl, start,[ length])

    参数 描述
    string 原始字符串
    repl 指定替换后的新字符串
    start 指定替换字符串开始的位置。 正数表示替换从字符串的第 start 位置开始; 负数表示替换从字符串的倒 数第 start 位置开始; 0 表示替换从字符串中的第一 个字符开始
    length 可选参数,指定返回的字符串长度。默认值是整个字符串。正数表示被替换的子字符串的长度;负数表示待替换的子宁符串结尾处距离字符串末端的字符个数;0 表示将 repl插入到 string 的 start 位置处

3.2.8 格式化字符串

number_format(float number[,int decimals [,string dec_point[,string thousand_sep]]])

number为要格式化的数字,dee皿als为要保留的小数位数,dec_point为指定小数点显示的字符,thousands_sep为指定千位分隔符显示的字符 。此函数可以有1、2、4个参数,但不能是3个参数

例子:

 
    $num = 12345678.12345689;
    echo number_format($num,5,'.','"');
?>

结果:

12"345"678.12346

3.2.9 分割字符串(及print_r与echo的区别)

explode(string delimiter,string str[int limit])

参数 描述
delimiter 边界上的分隔符
str 要被分割的字符串
limit 分割次数,可选参数

例子:

 
    $a = 'c++%python%php%go%java';
    $b = explode('%',$a);
    print_r($b);
    echo '
'
; echo $b.'
'
; echo $b[0]; ?>

结果:

Array ( [0] => c++ [1] => python [2] => php [3] => go [4] => java )
Array
c++

print_r可以输出数组,echo只能输出单个元素

3.2.10 合并字符串

**implode(strihg glue, array pieces) **

glue是指定的连接符,pieces是数组类型,指定要被合并的数组。

第四章:正则表达式

4.1 语法规则

符号 用法 例子
^ 表示行的开始 ^word
$ 表示行的结尾 word$
\b 表示要查找的字串为一个完整的单词 \bword\b
\B 表示要查找的不是一个完整的单词,而是单词或字符串的一部分 \Btem\B
[ ] 忽略大小的匹配一个字符 [tT]
[[:digit:]] 十进制数字集合,等同于[0-9]
[[:alnum:]] 字母和数字的集合,等同于[a-zA-Z0-9]
[[:alpha:]] 字母集合,等同于[a-zA-Z]
[[:blank:]] 空格和制表符
[[:xdigit:]] 十六进制数字
[[:punct:]] 特殊字符集合。包括键盘上的所有特殊字符,如“!” “@” “#” “S” “?”等
[[:print:]] 所有的可打印字符(包括空白字符)
[[:space:]] 空白字符(空格、换行符、换页符、回车符、水平制表符)
[[:graph:]] 所有的可打印字符(不包括空白字符)
[[:upper:]] 所有大写字母,等同于[A-Z]
[[:lower:]] 所有小写字母,等同于[a-z]
[[:cntrl:]] 控制字符
| 或,表选择 (T|t)(M|m)表示匹配四种组合方式:TM、Tm、tM、tm
- 连字符,表示可选字符的范围 [a-z]
[^] ^放在括号内表示排除,取非的意思 [^a-zA-Z]
? 匹配前面的字符0次或1次 cplou?r:color或colour
+ 匹配前面的字符一次或多次
* 匹配前面的字符0次或多次
{n} 匹配前面的字符n次
{n,} 匹配前面的字符最少n次
{n,m} 匹配前面的字符最少n次,最多m次
. 匹配除换行符外任意的一个字符
\ 转义等功能
\d 任意一个十进制数字,相当于[0-9]
\D 任意一个非十进制数字
\s 任意一个空白字符(空格、换行符、换页符、同车符、水平制表符) ,相当千[\f\n\r\t]
\S 任意一个非空白字符
\w 任意一个单词字符,相当于[a-zA-Z0-9]
\W 任意一个非单词字符
() 1.改变限定符的作用范围;2.分组
反向引用 依靠式子的记忆功能来匹配连续出现的字符串 (if)(we)\1\2:匹配字符串ifweifwe

4.2 函数

  • preg_grep(string pattern, array input )

    
        $preg = '/\w{7,}@\w{2,}\.com/';
        $ary = array('[email protected]','[email protected]','[email protected]');
        $preg_array = preg_grep($preg, $ary);
        var_dump($preg_array);
    ?>
    

    结果:

    array(2) { [1]=> string(14) “[email protected]” [2]=> string(19) “[email protected]” }

    注意:正则表达式前后要加’/'

  • preg_match()和preg_match_all()函数

    **int preg_match/preg_match_all(string pattern, string subject [, array matches]) **

    函数preg_match()的返回值是0或1, 因为该函数在匹配成功后就停止继续查找了。而preg_match_all()函数则会一直匹配到最后才停止。参数matches是将匹配到的字符存储在该数组里。

    例子:

    
        $str = 'This is an example!';
        $preg = '/\b\w{2}\b/';
        $num1 = preg_match($preg, $str, $str1);
        echo $num1.'
    '
    ; var_dump($str1); $num2 = preg_match_all($preg, $str, $str2); echo '

    '.$num2.'
    '
    ; var_dump($str2); ?>

    结果:

    1
    array(1) { [0]=> string(2) “is” }

    2
    array(1) { [0]=> array(2) { [0]=> string(2) “is” [1]=> string(2) “an” } }

  • string preg_quote (string str [, string delimiter])

    str里的特殊字符进行转义,如果有参数delimiter,那么str里也会将该参数转义。该函数返回转义后的字符串。

  • mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])

    该函数在字符串subject中匹配表达式pattern, 并将匹配项替换成字串replacement。 如 果有参数limit, 则替换limit次。

  • mixed preg_replace_callback (mixed pattern, callback callback, mixed subject[, int limit])

    preg_replace_ callback()函数与preg_replace()函数的功能相同,都用于查找和替换字串 。不同的是,preg_replace _ callback()函数使用一个回调函数(callback)来代替replacement参数。

  • array preg_split (string pattern, string subject [, int limit])

    使用表达式pattern来分割字符串subject。

第五章:数组

5.1 数组的类型

5.1.1 数字索引数组

数组的键值为数字

5.1.2 关联数组

键值为字符串:

姓名为Jack,年龄为22,身高为185
20
    $newAry = array('name'=>'Jack', 'age'=>'22', 'height'=>'185');
	echo '姓名为'.$newAry['name'].',年龄为'.$newAry['age'].',身高为'.$newAry['height'].'
'
; $newAry['age'] = '20'; echo $newAry['age']; ?>

结果为:

姓名为Jack,年龄为22,身高为185
20

5.2 输出数组

使用**print_r( expression )**函数:

如果该函数的参数expression为普通的整型、 字符型或实型变量, 则输出该变量本身。 如果该参数为数组, 则按一定键值和元素的顺序显示出该数组中的所有元素。

5.3 二维数组


    $new = array(0=>array('数学','英语'),'girl'=>array('one'=>'刘亦菲','third'=>'赵丽颖'));
    echo $new[0][1].'
'
; print_r($new['girl']['one']); echo '
'
; print_r($new); ?>

结果:

英语
刘亦菲
Array ( [0] => Array ( [0] => 数学 [1] => 英语 ) [girl] => Array ( [one] => 刘亦菲 [third] => 赵丽颖 ) )

5.4 遍历数组

5.4.1 foreach遍历


    //一维数组遍历
    $str = array('1','2','3');
    foreach($str as $value)
    {
     
        echo $value.';';
    }
    echo '
'
; //二维数组遍历 $new = array(0=>array('数学','英语'),'girl'=>array('one'=>'刘亦菲','third'=>'赵丽颖')); foreach($new as $value) { foreach($value as $val) { echo $val.';'; } } ?>

结果:

1;2;3;
数学;英语;刘亦菲;赵丽颖;

5.4.2 list函数遍历


	$my_array = array("Dog","Cat","Horse");

	list($a, $b, $c) = $my_array;
	echo "I have several animals, a $a, a $b and a $c.";
?>

结果:

I have several animals, a Dog, a Cat and a Horse.

5.5 字符串与数组的转换

5.5.1 字符串转数组


    $str = '皮卡丘,杰尼龟,比雕';
    $ary = explode(',',$str);
    print_r($ary);
?>

结果:

Array ( [0] => 皮卡丘 [1] => 杰尼龟 [2] => 比雕 )

5.5.2 数组转字符串


    $str = '皮卡丘,杰尼龟,比雕';
    $ary = explode(',',$str);
    print_r($ary);
    echo '
'
; $str = implode('、',$ary); print_r($str); ?>

结果:

Array ( [0] => 皮卡丘 [1] => 杰尼龟 [2] => 比雕 )
皮卡丘、杰尼龟、比雕

5.6 统计数组元素个数

int count (mixed array [, int mode])

参数 描述
array 数组
mode 默认为0,使用默认值时只能遍历一维数组。设置为COUNT_RECURSIVE (或 1)时,能遍历多维数组

    $str = array('1','2','3','4','5');
    $str2 = array(0=>array('1','2','3'),1=>array('1','2'));
    echo count($str).'
'
; echo count($str2).'
'
; echo count($str2,1); ?>

结果:

5
2
7

###5.7 查询数组中指定元素

mixed array_search ( mixed needle, array haystack [, bool strict])

其中, needle 指定在数组中搜索的值; haystack 指定被搜索的数组; strict 为可选参数, 如果值为 true, 还将在数组中检查给定值的类型。

5.8 获取数组中最后一个元素

函数:array_pop( array )

array _pop()函数获取并返回数组的最后一个元素, 并将数组的长度减1,如果数组为空(或者不是数组)将返回null。

5.9 向数组中添加元素

int array_push (array array, mixed var[, mixed … ])

array_push()函数将数组当成一个栈, 将传入的变量压入该数组的末尾, 该数组的长度将增加入栈变量的数目, 返回数组新的元素总数。


    $new = array('1','2','3');
    $num = array_push($new, '4','5', '6');
    echo $num.'
'
; print_r($new); ?>

结果:

6
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )

5.10 删除数组中重复的元素

array array_unique (array array)

array_unique()函数用于将值作为字符串排序,然后对每个值只保留第一个键名,忽略所有后面的键名, 即删除数组中重复的元素。

第六章:PHP与Web页面交互

6.1 表单

6.1.1 form标签属性

属性 描述
name 表单名称
method 表单的提交方式(GETPOST
action 指向处理该表单页面的URL(相对位置或绝对位置)
enctype 设置表单内容的编码方式
target 设置返回信息的显示方式
target属性值 描述
_blank 将返回信息显示在新的窗口
_parent 将返回信息显示在父级窗口
_self 将返回信息显示在当前窗口
_top 将返回信息显示在顶级窗口

6.1.2 其它

关于表单的其他内容请自行寻找

6.2 PHP参数传递的常用方法

6.2.1 $_POST[]和$_GET[]全局变量


    $user = $_POST["user"]; //获取名为user的文本框的内容
	$user = $_GET["user"];
?>

6.2.2 $_SESSION[]变量


    $user = $_SESSION["user"];
?>

使用$_SESSION[]传参的方法获取的变量值,保存之后任何页面都可以使用,但这种方法很耗费系统资源,建议读者慎重使用。

6.2.3 获取参数值

例子:


    
        
        TEST
    
    
        
性别:

结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dLDEaMJh-1587956186477)(D:\Typora\保存\php\图片\1.png)]

点击"提交"后:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W5g3JbXm-1587956186488)(D:\Typora\保存\php\图片\2.png)]

第七章:PHP与JavaScript交互

7.1 JavaScript基础

  • 数据类型

    数据类型 说明
    字符串型 单个或多个字符
    数值型 整数或浮点数
    布尔型 true或false
    对象型 对象
    Null值 可以给变量赋null值来清除变量内容
    Undefined 表示该变量尚未被赋值
  • 变量声明与赋值

    var i, j; //变量声明
    var i=1; j=100; //赋值
    
  • 注释

    单行注释://

    多行注释:/* */

  • 函数

    function 函数名 (参数) { 函数体; }

    例:

    <script language="javascript">
        function cheng(a, b){
           
        	return a*b;
        }
        document.write(cheng(5,10));
    </script>
    
  • 条件语句

    var form=99;
    if (form<60)
        {
           
            alert("不及格");
        }
    else if(form>=60&&form<=89)
        {
           
            alert("良好");
        }
    else
        {
           alert("优秀");}
    
  • 循环

    var number = 100;
    while(number--)
        {
           
            document.write(number);
        }
    for(var i=1;i<100;i++)
        {
           
            document.write(i);
        }
    

其它请参考菜鸟教程:JavaScript

第八章:PHP与MySQL

8.1 操作MySQL数据库

8.1.1 连接

函数:mysqli_connect(sever, username, password, dbname, port, socket)

参数 描述
sever MySQL服务器地址(IP地址)
username 用户名
password 密码
dbname 连接的数据库名称
port MySQL服务器使用的端口号
socket Unix域socket

使用mysqli_connect函数,如果连接成功返回一个mysql连接标识,否则返回false。

8.1.2 选择数据库

  • 方式一

    $con = mysqli_connect('127.0.0.1','root','root','dbname');
    
  • 方式二

    $con = mysqli_connect('127.0.0.1','root','root');
    if($con)
    {
           
        mysqli_select_db($con, 'dbname');
    }
    

8.1.3 执行SQL语句

mysqli_query(link, query[, resultmode])

参数 描述
link mysql连接
query sql语句
resultmode 可选。一个常量。可以是下列值中的任意一个: MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个,mysqli_free_result()函数可以释放内存,两者配合使用)、MYSQLI_STORE_RESULT(默认)

查询结果集请参考:函数大全

8.1.4 释放内存

$result = mysqli_query($connect, "select * from ……");
mysqli_free_result($result);

8.1.5 关闭连接

mysqli_close($connect)

ort, socket)**

参数 描述
sever MySQL服务器地址(IP地址)
username 用户名
password 密码
dbname 连接的数据库名称
port MySQL服务器使用的端口号
socket Unix域socket

使用mysqli_connect函数,如果连接成功返回一个mysql连接标识,否则返回false。

8.1.2 选择数据库

  • 方式一

    $con = mysqli_connect('127.0.0.1','root','root','dbname');
    
  • 方式二

    $con = mysqli_connect('127.0.0.1','root','root');
    if($con)
    {
           
        mysqli_select_db($con, 'dbname');
    }
    

8.1.3 执行SQL语句

mysqli_query(link, query[, resultmode])

参数 描述
link mysql连接
query sql语句
resultmode 可选。一个常量。可以是下列值中的任意一个: MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个,mysqli_free_result()函数可以释放内存,两者配合使用)、MYSQLI_STORE_RESULT(默认)

查询结果集请参考:函数大全

8.1.4 释放内存

$result = mysqli_query($connect, "select * from ……");
mysqli_free_result($result);

8.1.5 关闭连接

mysqli_close($connect)

你可能感兴趣的:(前端,php,前端)