php基础

2017-11-14  本文已影响0人  4e855d444c9f

[if !supportLists]1.[endif]PHP基础(变量的八种类型、emptyissetnull、变量类型的自动和强制转换、常量、运算符(算术、比较、逻辑、三元运算符)

1.变量的八种类型

整型,字符串,浮点型,布尔型,数组,面向对象,资源,null

[if !supportLists]1.[endif]Empty

如果参数是非空或非零的值,则返回false,反之则为true。

emptytrue的情况

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

2PHP语句(ifelseswitchwhiledo...whileforbreakcontinueexitdie)

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.breakcontinueexitdie

break满足条件,终止执行

continue跳过满足的条件,继续执行

exit无条件终止执行

die函数是exit函数的别名

3PHP函数(函数的声明和调用、局部变量和全局变量、静态变量、可变变量函数、回调函数、递归函数)

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

上一篇下一篇

猜你喜欢

热点阅读