php基础
[if !supportLists]1.[endif]PHP基础(变量的八种类型、empty和isset、null、变量类型的自动和强制转换、常量、运算符(算术、比较、逻辑、三元运算符))
1.变量的八种类型
整型,字符串,浮点型,布尔型,数组,面向对象,资源,null
[if !supportLists]1.[endif]Empty
如果参数是非空或非零的值,则返回false,反之则为true。
empty为true的情况:
00.0“”空字符串“0”字符串零falsenullarray()空数组
没有任何属性的对象
2.
isset检测变量是否设置
3.
unset释放给定的变量
4.
null空变量
三种情况为null:
1.直接赋值为null
2.被unset销毁的变量
3.为被赋值的变量
2.变量类型的自动和强制转换
1.自动转换
1).布尔值true自动转换1,false自动转换为0或空
2). Null自动转换0
3).如果字符串首字符不是数字,那么就转换为0,再参与运算
2.强制类型转换有三种方式
第一种方式(int)(float)(string)(bool)
第二种方式intval(变量)floatval(变量)strval(变量)
第三种方式settype(变量,变量类型);
3.常量
1.定义一次,就不能改变它的值
2.定义常量define('常量名(要大写)',值)
3.判断常量是否被设置defined(‘常量名’)
4.运算符(算术、比较、逻辑、三元运算符))
1.算术运算符+-*/%++--
++$i前加加先自增再赋值
$i++后加加先赋值再加加
2.字符串连接符(.)
3.赋值运算符
把值赋给变量(=)
字符串拼装的作用(.=)
4.比较运算符
等于( == )
全等于( === )不仅仅考虑值相等,变量的类型也要相等
5.逻辑运算符
逻辑或||or:符号两边只要有一边为true,结果则为true
逻辑与&&and:符号两边都为true,结果才为true
逻辑非(取反)!
注:逻辑运算符短路问题
1).当逻辑与&&判断时,符号左边如果为false,则不会继续执行符号右边的
$a = 1;
if($a ==2 && $a++){
echo $a;//什么都没有
}
echo $a;//输出1
2).当逻辑或||判断时,符号左边如果为true,则不会继续执行符号右边的
$a = 1;
if($a == 1 || $a++){
echo $a;//输出1
}
6.位运算符
1).按位与&两边都是1,结果才为1
$a = 10;// 01010
$b = 20;// 10100
//----------------------
//00000
echo $a&$b;//输出0
2).按位或|两边都是0,结果才为0
$a = 10;//
01010
$b = 15;// 01111
//---------------------
//01111
echo $a|$b;//输出15
7.三元运算符(? :)
$a = '哇哈哈'
$str=($a=='哇哈哈')?'哇哈哈':'阿童木';
echo $str//输出哇哈哈
注:三元运算符中不能加echo
2、PHP语句(if、else、switch、while、do...while、for、break、continue、exit、die)
1.单一分支结构
If(满足条件也就是转化为bool型true){
//执行大括号里的代码块
}
2.双向条件分支结构
if(empty($a)){//true执行下面的代码如果为false执行else区间的代码
echo '男';
}else{
echo '女';
}
3.switch开关的意思判断字符串或者整型浮点型只能判断是还是不是
$a = '3';
switch($a){
case '5':
echo '5';
break;//跳出代码块
case '6':
echo '6';//后不加break,会穿透执行
break;
default://默认选项当前面的选项都不满足的时候默认执行此代码
echo '哇哈哈';
}
4.for循环(九九乘法表)
//正序的九九乘法表
for($i=1;$i<=9;$i++){//初始值0;范围小于5;步长1;
for($j=1;$j<=$i;$j++){
echo $j.'x'.$i.'='.$i*$j."\t";//会输出这样格式的1x1=1等。。。
}
echo'
';
}
//倒序的九九乘法表
for($i=9;$i>0;$i--){
for($j=$i;$j>0;$j--){
echo$i.'x'.$j.'='.$i*$j."\t";//会输出这样格式的9x9=81等。。。
}
echo'
';
}
5.while只有条件满足,才会执行(九九乘法表)
//正序的九九乘法表
$i=1;
while($i<=9){//满足小括号里的条件才会执行代码块
$j=1;
while($j<=$i){
echo$j.'x'.$i.'='.$i*$j."\t";//会输出这样格式的1x1=1等。。。
$j++;
}
echo'
';
$i++;
}
//倒序的九九乘法表
$i=9;
while($i>0){
echo '
';
$j=$i;
while($j>0){
echo$i.'x'.$j.'='.$i*$j."\t";//会输出这样格式的9x9=81等。。。
$j--;
}
$i--;
}
6.do...while不管条件满不满足,先执行一遍再说
$i=0;
do{//先执行大括号里的代码再说,再去判断while满不满足满足就继续执行不满足,终止执行
echo '阿萨姆';
}while($i>1);
7.break、continue、exit、die
break满足条件,终止执行
continue跳过满足的条件,继续执行
exit无条件终止执行
die函数是exit函数的别名
3、PHP函数(函数的声明和调用、局部变量和全局变量、静态变量、可变变量函数、回调函数、递归函数)
1.函数的声明和调用
函数完成一定功能按特定格式组织一段代码,参数传进去值返回,相同的代码可以声明一次无限次调用。函数名不能重名,也不能和系统函数同名,命名规则遵循变量的命名规则。
函数的声明function函数名(参数1,参数2,参数3){//形参}
函数的调用函数名(//实参);
函数的返回值1.可以向函数调用者返回函数体中【任意确定】的值
2.退出函数,也是终止执行下面的函数
注:形参和实参的顺序是对应,不可打乱,也不可少一或多一个。
2.局部变量和全局变量、静态变量
[if !supportLists]1.[endif]局部变量
也叫内部变量,仅限于函数内部。离开function{
}外输出会报注意【Notice】
[if !supportLists]2.[endif]全局变量
也叫外部变量,从变量定义处开始,到本程序文件的末尾
[if !supportLists]1.)[endif]global全局的意思,第一种【注意格式的不同】
$a=987654321;
functionalala( ){
global $a;
echo $a;
}
alala();//不用输出$a
[if !supportLists]2.)[endif]$GLOBALS全局的意思第二种【注意格式的不同】
$b=654;
functioncaca( ){
$GLOBALS
['b'];//没有$符
}
caca();
echo $b;//要输出$b
3.静态变量
函数里重复使用,不会被销毁的,会有专门的一份内存来保存变量,静态的内存
function jing( ){
static $a=6;
echo '——'.$a;
$a++;
}
jing();//输出6,不是7(因为前++还是后++;都是从上至下执行,都输出6)
jing();//输出7
jing();//输出8
[if !supportLists]3.[endif]各种形式的php函数
[if !supportLists]1.[endif]赋值传值
就相当于复制文件,修改当中一个文件,并不会影响它自身的内容。
[if !supportLists]2.[endif]引用传值
就相当于创建快捷方式,修改其中一个,两个都会改变,也属于局部变量
function test(&$num){//使用引用变量,将一个&加到将要赋值的变量前
echo $num;
}
test(2);
[if !supportLists]3.[endif]可变参数的个数
function more_args(){//可变参数的个数
$args=func_get_args();//获取函数的可变参数,它是一个数组
for($i=0;$i
echo '第'.$i.'个参数是'.$args[$i].'
';//输出第一个是one等。。。
}
}
more_args('one','two','three',1,2,3);
4.可变变量以一个变量的值作为另外一个变量的名
$a = 'hello';
$hello ='world';
$world ='perfect';
echo $$a;// world;
echo $$$a;// perfect
[if !supportLists]4.[endif]回调函数
回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应
//程序是自上往下执行一定要执行完才会继续
functionone(){
echo 'one';
two();
echo 'one';
}
functiontwo(){
echo 'two';
three();
echo 'two';
}
functionthree(){
echo 'three';
}
one();//输出onetwothreetwoone
call_user_func()把第一个参数作为回调应用
function wahaha($num){
echo'wahaha'.$num;//输出wahaha4
}
call_user_func('wahaha',4);//也能执行函数的调用间接调用
call_user_func_array(被调用的回调函数,要被传入回调函数的数组(索引数组))
调用回调函数,并把一个数组参数作为回调函数的参数
[if !supportLists]5.[endif]递归函数
递归函数,函数本身自己调用自己,任何语言都有,地位还比较重要,可遍历文件夹、商品分类
1.阶乘
function jiecheng($num){
if($num>1){
return$num*jiecheng($num-1);
}else{
return1;
}
}
echo jiecheng(5);//输出120
//执行顺序
//return 5*jiecheng(4)
//5*4*jiecheng(3)
//5*4*3*jiecheng(2)
//5*4*3*2*jiecheng(1)
//5*4*3*2*1 = 120
2.斐波尼奇数列
function shulie($num){
if($num==1||$num==2){
return1;
}else{
returnshulie($num-1)+shulie($num-2);
}
}
//1123581321….
echo shulie(7);//输出13
4、数组(数组的分类定义、遍历数组的四种方式、预定义数组、常用的数组函数、冒泡算法)
数组的定义
1.索引数组:下标是顺序的整数作索引。
$array=array('a','b','c');
$array[]='simon';
print_r($array);
?>
[if !supportLists]2.[endif]关联数组:下标是字符串作索引。
$a=array(key1=>value1,key2=>value2,key3=>value3);
3.$a[key1]=value1;$a[key2]=value2;
4.通过中括号[ ]定义数组
$data= ['start_time'=> '123','end_time'=>'456'];
遍历数组的四种方式
预定义数组
[if !supportLists]1.[endif]服务器变量$_SERVER:$_SERVER是一个包含诸如头信息、路径和脚本位置的数组。数组的实体由web服务器创建,并不能保证所有的服务器都能产生所有的信息,服务器可能忽略了一些信息,或者产生了一些其他的新的信息。和其他的超全局数组一样,这是一个自动的全局变量,在所有的脚本中都有效,在函数或对象的方法中不需要使用global关键字访问它。
[if !supportLists]2.[endif]$_ENV环境变量:数组中的内容是在PHP解析器运行时,从PHP所在服务器中的环境变量转变为PHP全局变量的。它们中许多都是由PHP所运行的系统决定的,完整的列表是不可能的,需要查看PHP所在服务器的系统文档以确定其特定的环境变量。
[if !supportLists]3.[endif]URL GET变量:$_GET数组也是超全局变量数组,是通过URL GET方法传递的变量组成的数组。它属于外部变量,即在服务器页面中通过$_GET超全局数据获取URL或表单的GET方式传递过来的参数。
[if !supportLists]4.[endif]HTTP POST变量$_POST:数组是通过HTTP POST方法传递的变量组成的数组。$_POST和$_GET数组之一都可以保存表单提交的变量,使用哪一个数组取决于提交表单时在表单form标记中的method属性使用的方法是post还是get。但是使用$_POST数组只能访问以post方法提交的表单数据。
[if !supportLists]5.[endif]HTTP文件上传变量$FILES:使用表单的file输入域上传文件时,必须使用post提交。但在服务器文件中,并不能通过$_POST超全局数组获取到表单中file域的内容。而$_FILES超全局变量是通过post方法传递的已上传文件项目组成的数组。$_FILES是一个二维数组,包含5个子数组元素,其中第一个下标是表单中file输入域的名称,第二个下标用于描述上传文件的属性。
[if !supportLists]6.[endif]HTTPCOOKIES:$_COOKIE超全局数组是经由HTTP
Cookies方法提交至脚本的变量。通常这些Cookies是由以前执行的PHP脚本通过setCookies()函数设置到客户端浏览器中的,当PHP脚本从客户浏览器提取了一个cookie后,它将自动把它转换成一个变量,可以通过这个$_COOKIE超全局数组和cookie的名称来存取指定的cookie值。
[if !supportLists]7.[endif]Session变量:会话控制是在服务器端使用session跟踪用户,当服务器页面中使用session_start()函数开启session后,就可以使用$_SESSION数组注册全局变量,用户就可以在整个网站中访问这些会员信息。
[if !supportLists]8.[endif]GLOBAL变量:$GLOBALS是由所有已定义的全局变量组成的数组,变量名就是该数组的索引。
常用的数组函数
见文档
冒泡算法
/*冒泡算法
* @para $arr传人进去排序的数组
* @return $newArr排序之后的数组
*/
functionmaopao($arr){
//一共是多少趟
for($i= count($arr)-1; $i>0; $i--){
$flag= 0;
//每一趟进行相邻两个数进行比较
for($j= 0; $j< $i; $j++){
if($arr[$j]>$arr[$j+1]){
$temp= $arr[$j];
$arr[$j]
= $arr[$j+1];
$arr[$j+1]
=$temp;
$flag= 1;
}
}
if($flag== 0){
break;
}
}
return$arr;
}
$arr=array(30,40,10,50,20,60);
print_r(maopao($arr));
?>
5、字符串(字符串函数)
见文档
[if !supportLists]6.[endif]正则表达式
[if !supportLists]7.[endif]会话控制
[if !supportLists]8.[endif]文件(目录和文件的操作、遍历目录、文件上传、多文件上传、下载)
[if !supportLists]9.[endif]GD库、新分使输销、验证码
[if !supportLists]10.[endif]mysql数据库(增删改查、关联查询、php处理mysql的函数)
[if !supportLists]11.[endif]项目登录、注册、商品、用户、分页功能
[if !supportLists]12.[endif]PHP面向对象、常用的四个类
[if !supportLists]13.[endif]Smarty
[if !supportLists]14.[endif]Pdo
[if !supportLists]15.[endif]异常处理
[if !supportLists]16.[endif]Mvc
[if !supportLists]17.[endif]Thinkphp3.1
[if !supportLists]18.[endif]Linux