一. 运算符和表达式
- 算数运算符: + - * / % .
- 赋值运算符: += -= *= /= %= .=
例子: $a += b 其 实 就 是 b 其实就是 b其实就是a = $a + $b - 自加自减运算: ++ –
- 关系运算符: < > <= >= != == !== ===
$a < $b
= 赋值
== 判断值是否相等
!= 判断值是否不相等
=== 判断值和值对应的类型都要相等
!== 判断值或者值对应的类型只要有一个不相等 - 逻辑运算符. && || and or !
二. 流程控制
####顺序结构:从上到下按顺序执行
####分支结构:
- 单向: 形式
if (表达式) {
语句块;
}
执行流程: 当程序执行到if语句时,判断表达式,如果为真,则执行语句块.,如果为假则不执行.
[注] 在实际开发中,总有那么一些二货,会将if后边 的大括号省略.如果省略之后默认第一个输出的语句块是if里边的大括号里边的内容.其他情况才是else大括号中的内容
2. 双向: 形式
if (表达式) {
语句块1;
} else {
语句块2;
}
执行流程: 当程序执行到if语句时,判断表达式,如果为真,执行语句块1,如果为假,执行语句块2.
[注] 语句块1和语句块2不会同时执行,也不会同时不执行,肯定会执行其中一个.
3. 多向: 形式
if (表达式) {
语句块1;
} else if (表达式2) {
语句块2;
} else if (表达式3) {
语句块3;
} else {
语句块4;
}
执行流程: 当程序执行到if语句时,先判断表达式1,如果为真,执行语句块1,直接跳出整个结构.若为假,继续判断表达式2,若为真,执行语句块2,跳出整个结构.若为假,接着往下继续这样的判断.最后如果都为假,则执行最后一个else语句块
[注] 理论上可以有多个if, 最后一个else可以没有
4. 嵌套:
if (){
if () {
语句块1;
} else {
语句块2;
}
}else {
语句块3;
}
[注] 嵌套时,一般时嵌套两层或者三层
5. switch-case: 语法格式:
switch (表达式) {
case 值1:
语句块1;
break;
case 值2:
语句块2;
break;
case 值3:
语句块3;
break;
case 值4:
语句块4;
break;
default:
语句块n;
break;
}
[注意事项]
1.默认每一个case后边可以是整型,字符串,浮点
2.默认每一个case后边都要跟一个break,遇到break就跳出整个结构
3.case后边可以没有break,如果没有,程序继续执行,直到遇到break,才跳出整个结构
4.理论上我们可以有多个case,来输出相同的内容
5.default可以有,也可以没有
循环结构:
- while: 语法结构:
while (表达式) {
循环体;
}
执行流程: 当程序执行到while结构时,首先判断表达式的真假,若为真,执行循环体,若为假,跳出循环.
2. for: 语法格式:
for (表达式1; 表达式2; 表达式3) {
循环体;
}
执行流程:先执行表达式1,再判断表达式2,如果真,执行循环体,再来执行表达式3,再判断表达式2,若果为真,继续执行循环体,再接执行表达式3,再来判断表达式2,直到表达式2的条件为假的时候,跳出循环
3. break和continue的区别
break: 跳出整个循环结构,无论后边还有多少语句都不执行
continue: 结束本次循环,后边的内容不再执行.接着执行下一次循环
[注]在while循环中使用continue可能会造成死循环
三.函数基本语法
- 基本格式
function 函数名(){
函数体;
}
[注]
1.函数是以function开头
2.function后边跟空格,空格后边跟函数名,函数名后边写().
3.在()下边写{}
4.函数一定要调用才能执行
5.调用时的写法: 函数名();
- 函数名:
1.跟变量的格式一样
2.函数名要有意义
3.函数名遵循驼峰法或者下划线 myFunc() my_func()
4.函数名不区分大小写,(但是大家一定要区分大小写) - 无参数无返回值
参数:就是函数的输入
返回值:就是函数的输出 - 有参数无返回值
1.在定义时,函数名后边的小括号,小括号里边的参数就是形式参数,参数就是一个变量
2.在调用时,函数名后边的小括号,小括号里边的参数是实际参数,这里的实际参数就是在实际值的 - 有参数有返回值
1.return 指返回值
2.函数名只能定义一次,可以调用多次
3.调用函数时,一旦遇到return,就立即返回,后边无论有多少代码都不再执行
4.return可以返回一个值,也可以返回多个值,多个值只需要返回一个数组即可. - 默认参数
1.一般情况下,没有默认值的参数放在最前边,有默认值的参数放在后边
2.在定义形式参数中,参数最多写5个,
四.作用域
一个变量的执行有效范围,或者是一个变量的生命周期.
内部变量
- 函数调用结束后,函数体内的变量都会被释放(销毁)
function huang(){
$a = 250;
echo $a;
}
huang();
echo $a;//报错
外部变量
- 函数内部不能调用函数外部的变量,函数外部也不能调用函数内部的变量
$b = 500;
function huang(){
$a = 250;
echo $a.'<br />';//250
echo '这是内部调用外部的变量,值为'. $b;//报错
}
huang();
echo '这是外部调用内部的变量,值为'. $a;//报错
echo '这是外部调用外部的变量,值为'. $b;//500
超全局变量
- 方法一: global $b 在函数内部调用外部变量时,使用global
global在函数内部产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量 - 方法二:
$GLOBALS $_GET $_POST $_FILES $_SESSION $_COOKIE $_SERVER
- $GLOBALS[]确确实实调用的是外部的变量,函数内外会始终保持一致,使用$GLOBALS在函数内部改变变量的值,同时函数外部变量的值也会改变
function test() {
$foo = "内部";
echo $GLOBALS["foo"] . "<br />";//外部
echo $foo . "<br />";//内部
}
$foo = "外部";
test();
var_dump($foo);//外部
静态变量
- 用static关键字声明的变量就是静态变量
- 静态变量一旦被声明,就已经有值了,函数调用执行完之后静态变量不会被销毁,无论你执行多少次.该静态变量的值会一直累加
五. 引用传参
- 引用传参时&必须写在形式参数的前边
- 使用引用传参时,形式参数发生变化对应的外边实际参数的值也会一起改变
- 参数在外面可以不定义,只有在引用传参时,可以在外边不定义实际参数(变量),在传值的时候,其实就相当于是在外边定义了一个参数(变量)
$a = 250;
function duhaitao(&$num){
$num = 300;
echo $num.'<br />';
}
duhaitao($a);
echo $a.'<br />';
六.加载文件
- include include_once
- require require_once
- include和require的区别
include:包含文件,当包含文件失败时,会出现一个警告,但是程序会继续往下执行
require:包含文件,当包含文件失败时,会出现一个致命性的错误,程序不会往下执行 - 带once和不带once的区别:
带once: 程序在执行的时候首先先检测该文件有没有加载,如果没有被加载,我们直接加载.如果已经加载.就不在加载了.
[总结]不带once的执行效率比带once的执行效率高 - 语法结构:
include '';
include();
七.数组
基本定义
- 数组: array 关键字 一组数据
- 元素:数组中的每一个个体就是一个元素
- 键值对: 英汉词典 hello===> 你好 world====>世界
数组分类和声明
- 索引数组
- 读取
通过找到数组的下标,把下标使用中括号括起来,就可以找到对应的值
echo $arr[3];
- 添加
$arr[7] = 8;
$arr[ ] = 10;//找到该数组中下标最大的值,然后给下标加1,就是当前值为10对应的下标
- 修改
$arr1[8] = 30;//修改的是已经存在的下标的值,
- 删除
unset($arr[1]);
var_dump($arr);
- 关联数组
- 读取
echo $arr[‘222’];
- 添加
$arr[‘aaa’] = ‘徐豪杰’;
$arr[ ] = ‘肖杰’;//这样写,通过数组中找到最大的(数字)或者(数字字符串),然后加1,作为该值得键.
- 修改
$arr[‘ccc’] = ‘小黄人’;
- 删除
unset($arr[‘ccc’]);
- 索引关联混合
- 多维数组
八. 数组遍历
- for
[注]for只能遍历索引数组,并且下标是从0开始连续的 - foreach
foreach ($arr as $key => $value) {
echo $key .'<br />';
echo $value.'<br />';
echo $key.'=>'.$value.'<br />';
}
-四. 超全局数组
- $_GET $_POST
[注]通过form表单提交过来的数据都是通过get或者post提交的 - $_REQUEST: 接收get和post任何一种方式提交过来的数据
- $_SERVER:是一个超全局数组[默写]
- SERVER_ADDR:获取服务器的ip地址
- REMOTE_ADDR: 获取客户端的ip地址
- HTTP_REFERRER:从哪里过来的