PHP基础知识小结

第一章 PHP基础语法

1.1 PHP中的注释

注释名称 代码样式
单行注释 // 或 #
多行注释 /*...*/

注意:

​ 多行注释中可以嵌套单行注释,但不可以嵌套多行注释。

PHP注释--使用实例

<?php
    // 单行注释
    #  单行注释
    /*多行注释中不能嵌套单行注释,//但可以嵌套单行注释。*/

1.2 PHP的格式

写法一:

<?php
?>

写法二:

省略?>不写,最后一行代码一定要写分号;若是写上?>,那么最后一行代码的分号可以省略不写。(要是PHP文件中含有HTMl代码,则一定要写上?>)

<?php
    echo 'aa';

<?php
    echo 'aa'
?>

第二章 变量声明

变量,是指可变的量。一旦被声明后,可以动态去改变变量的值。

2.1 变量命名规范

  1. 以$符开头
  2. 由数字、字母、下划线组成,但不能以数字开头
  3. 可以用中文命名,但不推荐使用
  4. 严格区分大小写
  5. 要使用一个变量,必须先声明该变量
  6. 给变量命名时,要有一定的含义,即起到见名知意的作用

变量命名--使用实例

<?php
    // 变量命名
    // 1.以$符开头
    // 2.由数字、字母、下划线组成,但不能用数字开头
    // 3.可以用中文命名,但不推荐使用
    // 4.严格区分大小写
    // 5.要使用一个变量,必须先声明该变量
    // 6.给变量命名时,要有一定的含义,即要做到见名知意
    $one = 'aa';
    // two = 'aa';
    $aa123 = 'bb';
    $_123 = 'cc';
    // $123 = 'dd';

    $中文 = '母语';
    $name = '张三';
    echo $one;
    echo $aa123;
    echo $_123;
    // echo $123;
    echo $中文;
    // echo $ONE;
    // echo $aa;
    echo $name;

2.2 变量相关函数

函数 作用
echo 打印普通变量和字符串,不能打印数组
(打印true为1,打印false时,页面不显示任何信息)
print_r() 打印变量信息,可以打印普通变量,常用于打印数组(打印true为1,打印false时,页面不显示任何信息s)
var_dump() 打印变量的所有相关信息,可以打印出布尔型的true和false
isset() 检测一个变量是否存在(被声明),若存在返回true,不存在返回false
unset() 销毁变量,使该变量相当于未被声明过

注意:

print_r()在实际开发中,处理较多的数据时,使用效果比var_dump的效果要好。

变量相关函数--使用实例

<?php
    // 变量相关函数
    // echo print_r() var_dump() isset() unset()
    $one = 'aa';
    $arr = array(1,2,3);

    echo $one;
    // echo $arr;
	// print_r($one);
    print_r($arr);
	var_dump($arr);
    var_dump(isset($arr));
    unset($arr);
    var_dump(isset($arr));
    var_dump(isset($aa));

2.3 可变变量$

可变变量--使用实例

<?php
    // 可变变量
    // $$two,即先解析$two -> aaa,然后是$aaa -> 王文
    $two = 'aaa';
    $$two = '王文';
    echo $aaa; //王文

	$one = 'bb';
    $bb = '哈哈';
    echo $$one; //哈哈

2.4 引用赋值&

变量的赋值,会自上而下覆盖前一个变量的值(变量总是传值赋值);但在使用&后则不再直接传值赋值,而是直接引用。此时,若&前后的任意一个值改变,两个变量的值都随之改变,且引用赋值后面的那个值一定是个变量

引用赋值--使用实例

<?php
    // 引用赋值
    // 变量的赋值,会覆盖变量的前一个值(传值赋值);使用&则不再开辟空间,而是直接选用。
    $three = 100;
    $four = 200;
    $three = 300;
    echo $three; //300

    $three = &$four;
	echo $three; //200
    $four = 500;
    echo $three; //500
    echo $four; //500

第三章 变量的数据类型

3.1 八种数据类型

分类 数据类型 类型组成
标量类型 布尔型 true、false
整型 正整数、负整数、0、进制
浮点型 小数、科学计数法(1.7E308)
字符串 单引号、双引号、定界符
复合类型 数组 1. 根据下表来分类 2. 根据维度来区分
对象 万事万物皆对象
特殊类型 资源 创建图片,打开文件夹
null 什么都没有,不只是代表空

3.1.1 布尔型

建议使用var_dump()进行打印,当使用echo进行打印时,true会在页面显示 1,false则什么也不显示

六种(其他类型转化为布尔型)为false的情况,其他都为true
布尔型的 0
整型的 0
浮点型的 0
空字符串和字符串为 0 (空字符串:字符串中不能有空格)
空的数组
特殊类型null

布尔型--使用实例

<?php

    // 布尔型 true false
    $one = true;
    $two = false;
    var_dump($one); //true
    var_dump($two); //false
    
    // 六种为false的情况(转化为布尔型)
    // 布尔型的false
    $a = false;
    // 整型的 0
    $b = 0;
    // 浮点型的 0
    $c = 0.0;
    // 空字符串,有空格时,它就不是空字符串了
    $d = '';
    // 字符串 0
    $d1 = '0';
    // 空数组
    $e = array();
    // null
    $f = null;
    if($d){
        echo 'aa';
    }else{
        echo 'bb';
    } //输出 bb

3.1.2 整型

进制:

​ 二进制(以0b开头)、八进制、十进制、十六进制(以0x开头)

最大值与最小值

​ 针对于32位操作系统,整型的最大值为2147483647,最小值为-2147483647,超过这个值则会变成浮点型。

整型--使用实例

<?php

    // 整型 int
    // 1.正整数 0 负整数 进制
    // 正整数
    $a = 10;
    // 0
    $b = 0;
    // 负整数
    $c = -10;
    // 2.进制
    // 二进制 以0b开头
    $d = 0b11;
    // 八进制,不标注且以0开头 都为八进制
    $e = 077;
    // 十六进制 以0x开头
    $f = 0xefa1;

    var_dump($a); //10
    var_dump($b); //0
    var_dump($c); //-10
    var_dump($d); //3
    var_dump($e); //63
    var_dump($f); //61345

    // 针对于32位操作系统的最大值与最小值 2147483647
    // 超过最大值与最小值,整型将转变为浮点型
    $max = 2147483647;
    // $one = 2147483648;
    $min = -2147483647;
    // $two = -2147483648;
    var_dump($max);
    var_dump($min);

3.1.3 浮点型

最大值为1.7E308(1.7*10的308次方),超过这个值则为INF(无穷大);最小值为-1.7E308,超过最小值则为-INF(负无穷大)。

浮点型--使用实例

<?php

    // 浮点型 float
    // 小数 科学计数法
    $a = 1.1;
    // 浮点型的 0
    $b = 0.0;
    $c = -1.1;
    // 科学计数法 1.7的10次方 E大小写皆可
    $d = 1.7E10;
    $e = 1.7E-4;

    var_dump($a); //1.1
    var_dump($b); //0.0
    var_dump($c); //-1.1
    var_dump($d); //1.7*10的10次方
    var_dump($e); //1.7*10的-4次方,依旧是正数

    // 浮点型的最大值与最小值 1.7E308
    // 超过最大最小值,为无穷大,但仍然为浮点型
    $max = 1.7E308;
    // $max = 1.7E309;
    $min = -1.7E308;
    // $min = -1.7E309;
    var_dump($max);
    var_dump($min);

3.1.4 字符串

字符串就是用单引号、双引号、定界符包含起来的字符,字符串没有长度限制。

单引号和双引号的区别

单引号 双引号
不解析变量、高效率、推荐使用 可以解析变量,变量前后应加上一个空格或{}
不能嵌套使用单引号、可以嵌套双引号,要使用单引号需要转义字符(不能自插,只能互插) 不能嵌套使用双引号,可以嵌套单引号,要使用双引号需要转义字符
转义字符只能转义自身和转义单引号 使用转义字符,只能转义它自身和双引号
不能解析特殊字符,使用特殊字符时,会显示反斜号 可以解析特殊字符

单引号与双引号--使用实例

<?php

    // 单引号与双引号
    // 单引号
    // 不解析变量,不解析特殊字符
    // 可以直接插入双引号 可以转义字符(\)本身和单引号 
    // 要想插入单引号,则需要加上转义字符\
    $a = '张三';
    $str = '{$a}该打的仗我\'已经打过了,"该跑的路"我也跑到了\\尽头,老子信的道老子自己来守 我宁可\n\r\t做一辈\"子披荆斩棘的小丑,也绝不会变成你们这种人渣的样子';
    echo $str;
    echo '<hr />';

    // 双引号
    // 可以解析变量,也可以解析特殊字符
    // 可以直接插入单引号,可以转义字符本身和双引号
    // 要想插入双引号,则需要加上转义字符\
    $a = '张三';
    $str = "{$a}该打的仗我'已经打过了,\"该跑的路\"我也跑到了\\尽头,老子信的道老子自己来守 我宁可\n\r\t做一辈子披荆斩棘的小丑,也绝不会变成你们这种人渣的样子";
    echo $str;

定界符的使用规范

​ 定界符(<<<)声明时,在这个定界符后以一种标识符开始,然后以这个标识符结束。

定界符--使用实例

<?php

    // 定界符
    // 与双引号作用一致,可以解析变量 适用于大量文本输入
    // 开始的标识符(下面的TF)后不能再加任何的空格等,结束的标识符必须顶格写
    $a = '张三';
    $str =<<<TF
    {$a} hello
内容
内容
……
TF;
    echo $str;

注意:

  1. 定界符后面加上标识符时,不能再加任何东西(包括空格、符号等)
  2. 作用与双引号一致,可以解析变量,适用于大量文本输入
  3. 标识符的命名符合PHP的命名规范,不能以数字开头

PHP中常用转义字符

转义字符 作用
\n 换行,将光标移到下一行的第一格
\r 回车,将光标移到当前行的第一格
\t 水平制表,将光标移到下一个水平制表位置(一个table符的距离)
\' 单引号,显示一个单引号
\" 双引号,显示一个双引号
\\ 斜杠,显示一个斜杠

3.1.5 数组

根据下标来分类 根据维度来分类
索引数组 (下标全是数字的) 一维数组 (只有一个array进行嵌套的)
关联数组 (下标全是字符串的) 二维数组 (有两个array进行嵌套使用)
混合数组 (小标既有数字又有字符串的) 多维数组 (有两个以上的array进行嵌套使用)

数组--使用实例

<?php
    
    // 根据下标来分类
    // 1. 索引数组 下标全是数字的
    $arr = array(1,2,3);
    var_dump($arr);

    // 2. 关联数组 下标全是字符串的,字符串的名称一般都是有意义的·
    $arr2 = array('id'=>1,'name'=>'张三','sex'=>'男');
    var_dump($arr2);
    
    // 3. 混合数组 下标既有数字又有字符串的
    $arr3 = array(1,'name'=>'李四',18);
    var_dump($arr3);

    // 根据维度来分类
    // 1. 一维数组
    $arr4 = array(1,2,3);
    var_dump($arr4);

    // 2. 二维数组 同一数组中嵌套一个数组
    $arr5 = array(
            array(1,'name'=>'tom'),
            array(1,2,3),
        );
    var_dump($arr5);

    // 3. 多维数组 同一数组中嵌套两个及以上的数组
    $arr6 = array(
                array(
                    array(1,2,3),
                    array(1,2,3),
                    ),
        );
    var_dump($arr6);
    

3.1.6 对象

万事万物皆对象,后面会讲到类与对象的关系,指一类事物形成的对象

类:指具有相同特征的一类事物

3.1.7 资源

资源指的是连接两者的通道,在PHP中,资源指的是打开一个文件或图片等。

3.1.8 null

null是PHP中一种特殊的类型,null不区分大小写(NULL)

三种被认为是null的情况
1. 直接赋值为null
2. 直接打印尚未被赋值的变量
3. unset()函数销毁一个变量

null--使用实例

<?php

    // null
    // 三种被认为是null的情况
    // 1. 直接被赋值为null
    $a = null;
    var_dump($a);

    // 2. 直接打印尚未被赋值的变量
    // 会报错,但它的类型是null
    var_dump($b);

    // 3. 使用unset()函数销毁一个变量
    $c = '';
    unset($c);
    var_dump($c);
    

3.2 检测变量是否被声明

  1. issert() 检测变量是否被声明,如果被声明返回true,否则返回false
  2. empty() 检测变量的值是否为空、零、假、null,如果是返回true,否则返回false

检测变量函数--使用实例

<?php

    // 检测变量是否被声明
    // 1. isset() 若变量被声明,则返回true,否则返回false
	$a = 10;
	var_dump(isset($a)); //true
	var_dump(isset($b)); //false

	// 2. empty() 检测变量的值是否为空、零、假、null,如果是返回true,否则返回false
	$b = 0;
	var_dump(isset($b)); //true
	var_dump(empty($b)); //true

	$c = null;
	var_dump(empty($c)); //true
	var_dump(empty($d)); //true
	

3.3 判断数据类型

函数 作用
is_bool() 判断是否是布尔型
is_int() 判断是否是整型
is_float() | is_real() 判断是否是浮点型
is_string() 判断是否是字符串
is_array() 判断是否是数组
is_object() 判断是否是对象
is_resource() 判断是否是资源
is_null() 判断是否是null
is_scalar() 判断是否是标量
is_numeric 判断是否是任何类型的数字和数字字符串
is_callable 判断是否是有效的函数名

注意:

标量是指整型、浮点型、布尔型和字符串型。

判断数据类型--使用实例

<?php
    
    // 判断数据类型,正确返回true 否则返回false
    $a = 'aa';
    $b = 1.1;
    $c = '10';

    var_dump(is_bool($a)); //false
    var_dump(is_int($a)); //false

    // 判断是否是浮点型
    var_dump(is_float($a)); //false
    var_dump(is_real($b)); //true

    // 判断是否是字符串   
    var_dump(is_string($a)); //true
	
	// 判断是否是数组
    var_dump(is_array($a)); //false
	// 判断是否是对象
    var_dump(is_object($a)); //false
	// 判断是否是资源
    var_dump(is_resource($a)); //false
	// 判断是否是null
    var_dump(is_null($a)); //false

    // 判断是否是标量
    var_dump(is_scalar($a)); //true

    // 判断是否是任何类型的数字或数字字符串
    var_dump(is_numeric($b)); //true
    var_dump(is_numeric($c)); //true

    // 判断是否是有效的函数名
    var_dump(is_callable($a)); //false
    // var_dump(is_callable($d));

3.4 数据类型转换

PHP属于弱类型语言,不像java, C++等语言是强类型语言,区别在于,弱类型的语言是自动转换数据类型,强类型语言必须手动声明类型。

3.4.1 自动类型转换

自动类型转换中,标量的四种类型和null可以进行自动类型转换。但实际使用中,只有布尔型和字符串间的转换有意义。

其中,布尔型自动转换时,true-->1 false-->0

字符串自动转换时,会从左往右进行选值,当遇到数值时则保留(数值中遇到其他字符只保留前面无其他字符的数值),遇到字母则直接舍去。

自动类型转换--使用实例

<?php
    
    // 自动类型转换
    // bool中true会变成 1 false会变成 0 
    // bool自动转化时只能转化为整型和浮点型
    // bool to int
    var_dump(true + 1); //2
    var_dump(false + 1); //1

    // bool to float
    var_dump(true + 1.1); //2.1
    var_dump(false + 1.1); //1.1

    // string自动转化时也只能转化为整型和浮点型
    // string自动转化时会从左往右进行,遇到数值则保留下来,遇到字母时则直接终止选值
    // string to int
    var_dump('11' + 1);     // 12
    var_dump('a11' + 1);    // 1
    var_dump('1a1' + 1);    // 2
    var_dump('11a2a3' + 1); // 12
    // PHP7.0版本后所有的进制都不转换 PHP5.6版本以下会自动转换
    var_dump('077a' + 1);   // 78
    var_dump('0xaa' + 1);   // 1

    // string to float
    var_dump('11' + 1.1);     // 12.1
    var_dump('a11' + 1.1);    // 1.1
    var_dump('1a1' + 1.1);    // 2.1
    var_dump('11a2a3' + 1.1); // 12.1
    var_dump('077a' + 1.1);   // 78.1
    var_dump('0xaa' + 1.1);   // 1.1

3.4.2 强类型转换

  • 类型转换仅当次有效

    括号加类型名 (int)$a

    函数名加变量 intval($a) boolval() strval() floatval()

  • 类型转换永久有效

    ​使用settype()函数进行永久类型转换,settype()函数中有两个参数,第一个为要改变类型的变量,第二个为要改变的类型名

强类型转换--使用实例

<?php

    // 强类型转换
    // 1. 当次有效的类型转换
    // 1.1 使用括号加类型名(无法转换为resource null)
    $a = 'aa';
    $b = 1.1;
    var_dump((bool)$a);
    var_dump((boolean)$a);
    var_dump((int)$a);
    var_dump((integer)$a);
    var_dump((float)$a);
    var_dump((real)$a);
    var_dump((string)$b);
    var_dump((array)$a);
    var_dump((object)$a);
    var_dump($a);
    var_dump($b);
    echo '<hr />';

    // 1.2 使用函数名加变量
    // boolval() intval() floatval() strval()
    // var_dump(boolval($a));
    var_dump(intval($a));
    var_dump(floatval($a));
    var_dump(strval($b));
    var_dump($a);
    var_dump($b);
    echo '<hr />';

    // 2. 永久有效的类型转换 settype()
    settype($a,'integer');
    var_dump($a); //0
    var_dump($a); //0
    

第四章 常量

4.1 常量

常量,是指常驻内存(即不变)的量,常用来连接数据库。用define来进行声明

常量定义格式

define('常量名','常量值',false) // false 常量名区分大小写,默认情况下就是false
define('常量名','常量值',true)  // true 常量名不区分大小写

常量名的命名规范

  1. 不能以$符开头
  2. 由数字字母下划线组成,但不能以数字开头
  3. 可以用中文命名,但不推荐使用
  4. 常量一旦被命名后,则不可以再次声明相同名称的常量
  5. 常量名推荐使用大写字母
  6. 常量全局有效

defined() 函数用来检测一个常量名是否被声明

常量名--使用规范

<?php
    
    // 常量
    // 常量名的false true两种模式
    define('AA','good',false); //区分大小写
    define('BB','not bad',true); //不区分大小写

    echo AA;
    echo '<br />';
    // echo aa;
    echo bb;
    echo '<br />';

    // 1. 不能以$符开头
    // 2. 常量名以数字字母下划线组成,但不能以数字靠头
    define('a_11','不能以数字开头');
    // define('11a','不能以数字开头');
    echo a_11;
    // echo 11a;
    echo '<br />';

    // 3. 常量名可以使用中文,但不推荐使用
    define('张三','你真的好帅');
    echo 张三;
    echo '<br />';

    // 4. 常量名一旦被声明,不能再声明相同名称的常量
    // define('张三','上面被声明过吗');
    // echo 张三;

    // 5. 常量名推荐使用大写字母
    define('CC','这是推荐使用的哦');
    echo CC;
    echo '<br />';

    // 6. 常量名全局有效
    
    // defined() 函数用来检测一个常量名是否被声明
    // 括号中记得加上引号,常量被声明返回true 否则返回false
    var_dump(defined('CC'));
    var_dump(defined('DD'));

4.2 系统常量和魔术常量

  • 系统常量
PHP_OS		 PHP运行的系统内核名称
PHP_VERSION  PHP版本号
  • 魔术常量
__LINE__ 返回当前行的行号
__FILE__ 返回当前文件的全部路径以及文件名

系统、魔术常量--使用实例

<?php
    
    // 系统常量和魔术常量
    // 1. 系统常量
    // PHP_OS PHP_VERSION
    var_dump(PHP_OS);
    var_dump(PHP_VERSION);

    // 2. 魔术常量
    // __LINE__ __FILE__
    var_dump(__LINE__);
    var_dump(__FILE__);

第五章 运算符

运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。(是可以通过一个以上的值进行运算,产生另一个值)

5.1 算数运算符

算术运算符:
	+ - * / % ++ --

算数运算符--使用实例

<?php
	// 算数运算符之加减乘除 求余
	$a = 10;
	$b = 5;
	var_dump($a + $b); //15
	var_dump($a - $b); //5
	var_dump($a * $b); //50
	var_dump($a / $b); //2
	var_dump($a % $b); //0

	// 自加++
	// 前加加 后加加
	// 前加加(++$a) 先运算后赋值
	// 后加加($a++) 先赋值后运算 
	$c = 10;
	$d = 10;
	// var_dump($c++); //10
	// var_dump(++$d); //11

	$e = $c++;
	$f = ++$d;
	var_dump($c); //11
	var_dump($e); //10

	var_dump($d); //11
	var_dump($f); //11

	// 自减--
	// 前减减 后减减
	$g = 10;
	$h = 10;
	// var_dump($g--); //10
	// var_dump(--$h); //9
	$i = $g--;
	$j = --$h;
	var_dump($g); //9
	var_dump($i); //10
	var_dump($h); //9
	var_dump($j); //9

5.2 连接运算符

神奇的米粒(.)

字符串运算符的用途:

  1. 字符串与字符串之间的连接
  2. 字符串与变量之间的连接
  3. 变量与字符串之间的连接
  4. 变量与变量之间的连接

连接运算符--使用实例

<?php
	// 连接运算符(字符串运算符)
	// 1. 字符串与字符串间的连接
	echo '你长得很美'.'<br />'.'就不要想得太美';
	echo '<br />';

	// 2. 字符串与变量间的连接
	$str = '该打的仗已经打完了';
	echo '我依旧是个小丑'.$str;
	echo '<br />';

	// 3. 变量与字符串间的连接
	echo $str.'我依旧是个小丑';
	echo '<br />';

	// 4. 变量与变量间的连接
	$str2 = '<br />小丑';
	echo $str.$str2;

5.3 赋值运算符

运算符 含义
= 将一个值或者表达式的结果赋值给变量
+= 将变量与所赋的值相加后的结果赋值给变量
-= 将变量与所赋的值相减后的结果赋值给变量
*= 将变量与所赋的值相乘后的结果赋值给变量
/= 将变量与所赋的值相除后的结果赋值给变量
%= 将变量与所赋的值求模后的结果赋值给变量
.= 将变量与所赋的值连接后的结果赋值给变量

赋值运算符--使用实例

<?php
	// 赋值运算符
	// = += -= *= /= %= .=
	$str = 10;
	// echo $str;

	// $str += 10;
	// $str = $str+10;

	// $str -= 10;
	// $str = $str - 10;

	// $str *= 10;
	// $str = $str*10;

	// $str /= 10;
	// $str = $str/10;

	// $str %= 10;
	// $str = $str % 10;

	$str1 = '你说地方';
	// $str1 .= '我就来';
	$str1 = $str1.'我就来';
	echo $str1;

5.4 比较运算符

运算符 含义
> 大于,当左边的值大于右边的时候返回true,否则返回false
< 小于,当左边的值小于右边的时候返回true,否则返回false
>= 大于等于,当左边的值大于等于右边的时候返回true,否则返回false
<= 小于等于,当左边的值小于等于右边的时候返回true,否则返回false
== 等于,两边的数值都相等时返回true,否则返回false
=== 全等于,两边的值和类型全都相等的时候返回true,否则返回false
!= 不等于,两边的值不相等的时候返回true,否则返回false
!== 全等于,两边的值和类型全都不相等的时候返回true,否则返回false

比较运算符--使用实例

<?php 
	// 比较运算符
	$a = 10;
	$b = 20;
	$c = '10'; //字符串
	$d = 10; //整型

	var_dump($a > $b); //false
	var_dump($a < $b); //true

	var_dump($a >= $b); //false
	var_dump($a <= $b); //true

	var_dump($d == $c); //true
	var_dump($d === $c); //fasle

	var_dump($c <>$d); //false  <>等同于 !=
	var_dump($c != $d); //false
	var_dump($c !== $d); //true

5.5 逻辑运算符

运算符 含义
逻辑与 && (and) 一边为假,即为假
逻辑或 `
逻辑非 真变成假,假变成真
逻辑异或 (xor) 相同为假,不同为真

逻辑运算符--使用实例

<?php 
	// 逻辑运算符
	// 1.逻辑与 &&
	// 一边为假即为假
	$a = true;
	$b = false;
	if($a && $b){
		echo '111';
	}else{
		echo '222'; //输出222
	}

	// 2.逻辑或 ||
	// 一边为真即为真
	if($a || $b){
		echo '111'; //输出111
	}else{
		echo '222';
	}

	// 3.逻辑非 !
	// 取反  真变假,假变真
	if(!$a){
		echo '111';
	}else{
		echo '222'; //输出222
	}

	// 4.逻辑异或 xor
	// 相同为假,不同为真
	if($a xor $b){
		echo '111'; //输出111
	}else{
		echo '222'; 
	}

5.6 其他运算符

运算符 含义
?: 三元运算符,用于简单的逻辑判断(结果只有false或true的)
`` 执行运算符,用于输出windows系统cmd中的命令结果
@ 错误控制运算符,用于抑制PHP中的notice错误
=> 数组下标指定符,指定数组的下标和值

其他运算符--使用实例

<?php 
	// 其他运算符
	// 1.三元运算符 ?:
	$a = 10;
	$b = 20;
	echo $a > $b ?1:0;

	// 2.执行运算符 ``(反引号)
	// 如果要正确显示文字,只要将火狐浏览器中的查看->文字编码 改为简体中文即可
	echo '<pre>';
	echo `ipconfig`;
	echo `tree`;

	// 3. 错误控制运算符 @
	// 让notice错误不显示
	echo @$c;

	// 4. 数组下标指定符
	$arr = array('name'=>'sea','age'=>18);
	var_dump($arr);

5.7 逻辑与或的短路特征

  • 逻辑与

    逻辑与运算符前面为假时,则不再执行后面的代码

  • 逻辑或

    逻辑或运算符前面为真时,则不再执行后面的代码

逻辑与或短路特征--使用实例

<?php 
	// 逻辑与 短路
	$a = 10;
	var_dump($b=0 && $a=20);
	echo $a; //10,当$b=0,即&&前面为false时,后面的代码则不运行
	var_dump($b);

	// 逻辑或 短路
	var_dump($a || $c=10);
	echo $a;
	var_dump($c); // 报错,因为$c=10的代码没有运行,相当于未声明$c

第六章 流程控制

代码执行顺序:从上到下,从左到右

常用的分支结构

  • if语句

    if(){} 只能管理花括号里面的内容,该内容被称为代码块或语句体

  • if...else语句

<?php
    if () {
        ...
    } esle {
        ...
    }
  • switch...case从句
<?php
	switch (variable) {
		case 'value':
			# code...
			break;
		
		default:
			# code...
			break;
	}

分支结构--使用实例

<?php 
	// 常用的分支结构
	// 1. if语句
	$a = true;
	$b = 2;
	if ($a) {
		echo '111'; //匹配的条件为true时 执行该语句
	}

	// 2. if...esle语句
	if (!$a) {
		echo '111';
	} else {
		echo '222'; // 条件为false时 执行该语句
	}
	
	// 3. switch...case从句
	// 每个case后都要加上break 用于跳出这个判断语句
	switch ($b) {
		case '0':
			echo '女';
			break;

		case '1':
			echo '男';
			break;

		case '2':
			echo '人妖';
			break;

		default:
			echo '保密';
			break;
	}

第七章 循环结构

循环结构的三要素:初始值、循环条件、改变条件

7.1 常用的循环结构

  • for循环
for(表达式1,表达式2,表达式3){
	循环体语句
}
  • while循环
while(判断条件){
    循环体语句
}
  • do...while循环(了解)
do{
    循环体语句
}while(判断条件)

循环结构--使用实例

<?php 
	// 常用的循环结构-->输出1到100的数
	// 1. for循环
	for ($i=1; $i <= 100; $i++) { 
		echo $i.' ';
	}

	echo '<br />';
	// 2. while循环
	$j = 1;
	while ($j <= 100) {
		echo $j.' ';
		$j++;
	}

	echo '<br />';
	// 3. do...while循环
	$h = 1;
	do {
		echo $h.' ';
		$h++ ;
	} while ($h <= 100);

7.2 特殊形成控制

特殊控制名称 作用
break 跳出整个循环,执行下面的代码
continue 跳出本次循环,进入下次循环
exit 或 die 终止程序运行

特殊形成控制--使用实例

<?php 
	// 特殊的形成控制
	for ($i=0; $i < 10; $i++) { 
		if ($i == 5) {
			echo '111';
			break; 			// 输出  111 是否执行代码
			// continue;	// 输出  111 222 是否执行代码
			// exit;		// 输出  111
			// die;			// 输出  111
		}
		if ($i == 6) {
			echo '222';
		}
	}
	echo '是否执行代码';

第八章 函数

函数是一种功能,通过调用,可以实现特定的一些功能。

函数分为系统函数自定义函数

函数的要点:

  1. 函数的作用

  2. 函数的参数

  3. 函数的返回值

8.1 自定义函数

函数的基本格式

/*
    function 函数名(参数1,参数2,...){
        函数体 (php语句)
        [return 返回值]
    }
    调用方法
        函数名();
 */

函数的命名规范

  1. 函数的命名规范遵循PHP的命名规范,数字、字母和下划线组成,但不能以数字开头
  2. 不区分大小写,但我们一般使用小写
  3. 不能重复声明函数名一样的函数
  4. function_exists()函数用于检测函数名是否被生命,括号内的函数名一定要加上引号

声明自定义函数--使用实例

<?php
	function func($a){
		echo $a; // 10
		return '11';
	}
	func(10);
	var_dump(function_exists('func')); //true

8.2 函数的return返回值

return返回值的作用

  1. 如果函数中存在return并且执行了该return,那么该函数的将执行结构可以被变量接受。
  2. 如果函数的执行过程中执行了return语句,后续的代码将不再执行。

return与echo的区别

echo 函数中使用echo时,调用函数就可以打印相应变量的值。

return 函数中只使用return时,想要打印相应变量的值,还需要echo等函数

函数返回值--使用实例

<?php 
	// 函数的返回值
	function func($a,$b){
		echo $a;
		return $b;
	}

	func(10,20);		// 10
	echo func(10,20);	// 10 20

8.3 函数的形参和实参

形参:形式上的参数,声明函数时小括号中的参数

  1. 形参可以有默认值,也可以没有默认值
  2. 如果形参有默认值,则需要将有默认值的参数放在最右边(因为实参传值总是从左边第一个开始传值)
  3. 形参没有默认值,必须需要实参进行传值
  4. 形参只是起到占位的作用,多个形参之间用逗号进行隔开

实参:实际的参数,调用函数时小括号中的填写的内容

  1. 实参的个数可以比形参多,但多出来的实参并没有任何作用。所以,一般情况下,实参个数等同于形参个数。

  2. 只有当形参有默认值时,实参的个数少于形参的个数。

函数的参数--使用实例

<?php 
	// 函数的形参和实参
	function jia($a,$b){
		return $a+$b;
	}
	echo jia(10,20);

8.4 其他函数(了解)

其他函数包含:

​ 可变参数函数、变量函数、匿名函数和递归函数

匿名函数实际上就是将一个函数赋值给了变量,所有需要先声明这个函数,再能调用。(这种用法,在JavaScript中比较常见)

8.5 函数中的变量作用域

php中的作用域,指的是局部变量和全局变量(即变量在函数内或函数外)。

普通变量: 不调用不执行,每次调用时都要申请一个空间去执行,结束后清楚掉空间

静态变量: 相对于内存而言,是静止不动的变量。函数调用结束后,不从内存中消失,下次直接使用

常量的作用与静态变量相仿,当常量无法像静态变量那样随时修改变量的值。

变量作用域--使用实例

<?php 
	// 函数中的变量作用域
	function func() {
		$a = 3;
		$a += 1;
		return $a;
	}
	echo func().'<br >'; // 4
	echo func().'<br >'; // 4
	echo func().'<br >'; // 4

	function func1(){
		static $b = 3;
		$b += 1;
		return $b;
	}
	echo func1().'<br />'; // 4
	echo func1().'<br />'; // 5
	echo func1().'<br />'; // 6

第九章 文件包含

include include_once 文件包含

require require_once 也是文件包含,但有必须存在的意思

被报包含的文件,如果内部有return返回值,会把整个函数返回到包含的地方

1. 文件包含的作用

通常用于多个文件的重复代码,将其生成一个文件引入即可。

2. include和require的区别

include 引入一个不存在的文件会报一个warning的错误,但代码继续执行。

一般用于广告等第三方代码的引入。

require 引入一个不存在的文件会报一个warning的错误,代码终止执行。

一般用于底层库等重要文件的引入。

3. 加once的作用

_once 指的是代码仅引入一次,如果之前引入过,则不再重复引入。

第十章 数组

数组的本质是指存储、操作和管理一组变量。

键值对的概念:$arr = array('name'=>'sea','age'=>18);

每个数组有多个值,多个值中间用逗号隔开,每个逗号内的数据被称为一个单元。

每个单元都有键、下标(=>)和值,即键值对的方式。声明下标时,该单元的下标即为声明的值,否则,下标为整数。(获取数组中的值时,就是通过数组的下标进行取值的)

10.1 数组的声明方式

  • 使用array()的方式声明(常用)
<?php
	// 数组的声明方式
	// 使用array()的方式声明
	// 1. 索引数组
	$arr = array('name','age','sex');
	var_dump($arr);

	// 2. 关联数组
	$arr1 = array('name'=>'sea','age'=>18,'sex'=>'男');
	var_dump($arr1);

	// 3. 混合数组
	$arr2 = array('name'=>'sea',18,'sex'=>'女');
	var_dump($arr2);

  • 使用[]的方式声明(5.6版本以上才能使用)

  • 直接赋值法声明$arr[]='sea';

10.2 数组的增删改查

<?php
	// 数组的增删改查
	$arr = array('name'=>'sea','age'=>18,'sex'=>'男','address'=>'南京');

	// 1. 增
	$arr[] = 'happy';
	$arr['hobby'] = '读书';

	// 2. 删
	// 2.1 删除一个单元
	unset($arr['sex']);
	// 2.2 清空数组
	// $arr = array();
	// 2.3 删除整个数组
	// unset($arr);
	
	// 3. 改
	$arr['hobby'] = '跑步';

	// 4. 查
	var_dump($arr);

10.3 数组的遍历

一维数组的取值一般都是用键值对的方式

数组的变量方法众多,像for循环遍历、foreach遍历、while list each遍历等,这里,我只介绍最常用的遍历方式

foreach遍历数组的格式:

foreach(要遍历的数组 as 键=>值){
	循环体;
}

foreach遍历数组--使用实例

<?php
	// 数组的遍历
	$arr = array(
		0=>array('name'=>'张三','age'=>18,'sex'=>'男'),
		1=>array('name'=>'李四','age'=>20,'sex'=>'男'),
		2=>array('name'=>'王二','age'=>30,'sex'=>'女'),
		3=>array('name'=>'李文','age'=>42,'sex'=>'男'),
	);
	var_dump($arr);

	foreach ($arr as $key => $value) {
		echo $value['name'];
		echo $value['age'];
		echo $value['sex'].'<br />';
	}

10.4 超全局数组变量

超全局数组变量,是系统提供的,且在任何作用域下都可以使用的变量。

超全局数组变量的字母都是大写的

1. $_SERVER--- 服务器和执行环境信息

2. $_GET--- 获取地址栏的信息

<?php 
	// $_GET
	var_dump($_GET);
?>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<form action="demo.php" method="get">
		<input type="text" name="name" placeholder="name"><br />
		<input type="password" name="pwd"><br />
		<input type="submit" value="提交">
	</form>
	<!-- a连接也可以用于get提交 -->
	<a href="demo.php?name=aa&age=18">小白</a>
</body>
</html>

3. $_POST--- 收集method=post表单中的值

<?php 
	// $_POST
	var_dump($_POST);
?>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<form action="demo.php" method="post">
		<input type="text" name="name" placeholder="name"><br />
		<input type="password" name="pwd"><br />
		<input type="submit" value="提交">
	</form>
</body>
</html>

4. $_FILES--- 打印文件上传是否成功的内容信息

表单类型为file时,form标签必须添加第三个属性enctype="multipart/form-data" 来配合文件上传,method方式也要是post

<?php 
	// $_FILES
	var_dump($_FILES);
?>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<form action="demo.php" method="post" enctype="multipart/form-data">
		<input type="file" name="pic"><br />
		<input type="submit" value="提交">
	</form>
</body>
</html>

第十一章 系统函数列表

见附录集

posted @ 2018-12-15 22:31  宋小羽  阅读(343)  评论(0编辑  收藏  举报