PHP基础知识小结
第一章 PHP基础语法
1.1 PHP中的注释
注释名称 | 代码样式 |
---|---|
单行注释 | // 或 # |
多行注释 | /*...*/ |
注意:
多行注释中可以嵌套单行注释,但不可以嵌套多行注释。
PHP注释--使用实例
<?php
// 单行注释
# 单行注释
/*多行注释中不能嵌套单行注释,//但可以嵌套单行注释。*/
1.2 PHP的格式
写法一:
<?php
?>
写法二:
省略?>
不写,最后一行代码一定要写分号;若是写上?>
,那么最后一行代码的分号可以省略不写。(要是PHP文件中含有HTMl代码,则一定要写上?>
)
<?php
echo 'aa';
或
<?php
echo 'aa'
?>
第二章 变量声明
变量,是指可变的量。一旦被声明后,可以动态去改变变量的值。
2.1 变量命名规范
- 以$符开头
- 由数字、字母、下划线组成,但不能以数字开头
- 可以用中文命名,但不推荐使用
- 严格区分大小写
- 要使用一个变量,必须先声明该变量
- 给变量命名时,要有一定的含义,即起到见名知意的作用
变量命名--使用实例
<?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;
注意:
- 定界符后面加上标识符时,不能再加任何东西(包括空格、符号等)
- 作用与双引号一致,可以解析变量,适用于大量文本输入
- 标识符的命名符合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 检测变量是否被声明
issert()
检测变量是否被声明,如果被声明返回true,否则返回falseempty()
检测变量的值是否为空、零、假、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 常量名不区分大小写
常量名的命名规范
- 不能以$符开头
- 由数字字母下划线组成,但不能以数字开头
- 可以用中文命名,但不推荐使用
- 常量一旦被命名后,则不可以再次声明相同名称的常量
- 常量名推荐使用大写字母
- 常量全局有效
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 连接运算符
神奇的米粒(.)
字符串运算符的用途:
- 字符串与字符串之间的连接
- 字符串与变量之间的连接
- 变量与字符串之间的连接
- 变量与变量之间的连接
连接运算符--使用实例
<?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 '是否执行代码';
第八章 函数
函数是一种功能,通过调用,可以实现特定的一些功能。
函数分为系统函数和自定义函数
函数的要点:
-
函数的作用
-
函数的参数
-
函数的返回值
8.1 自定义函数
函数的基本格式
/*
function 函数名(参数1,参数2,...){
函数体 (php语句)
[return 返回值]
}
调用方法
函数名();
*/
函数的命名规范
- 函数的命名规范遵循PHP的命名规范,数字、字母和下划线组成,但不能以数字开头
- 不区分大小写,但我们一般使用小写
- 不能重复声明函数名一样的函数
function_exists()
函数用于检测函数名是否被生命,括号内的函数名一定要加上引号
声明自定义函数--使用实例
<?php
function func($a){
echo $a; // 10
return '11';
}
func(10);
var_dump(function_exists('func')); //true
8.2 函数的return返回值
return返回值的作用
- 如果函数中存在return并且执行了该return,那么该函数的将执行结构可以被变量接受。
- 如果函数的执行过程中执行了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 函数的形参和实参
形参:形式上的参数,声明函数时小括号中的参数
- 形参可以有默认值,也可以没有默认值
- 如果形参有默认值,则需要将有默认值的参数放在最右边(因为实参传值总是从左边第一个开始传值)
- 形参没有默认值,必须需要实参进行传值
- 形参只是起到占位的作用,多个形参之间用逗号进行隔开
实参:实际的参数,调用函数时小括号中的填写的内容
-
实参的个数可以比形参多,但多出来的实参并没有任何作用。所以,一般情况下,实参个数等同于形参个数。
-
只有当形参有默认值时,实参的个数少于形参的个数。
函数的参数--使用实例
<?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>
第十一章 系统函数列表
见附录集