后端知识点总结——PHP1.0Web服务器Web服务器的作用:接收来自客户端(PC/PAD/PHONE)的请求,并找到需要的数据(文件/数据库/其他)系统),发送回给客户端。Web服务器有两种类型:(1)静态Web服务器:任何人提供的内容都是静态的Web内容,随时保持不变:HTML/CSS/JS/Flash/GIF/音视频...普通静态Webservers:ApacheHttpd,MSIIS,NginX(2)DynamicWebserver:不同人提供的内容可能会在不同时间发生变化DynamicWebcontent:JSP=HTML+Java(staticWebserver+Javainterpreter)PHP=HTML+PHP(staticWebserver+PHPinterpreter)ASP.NET=HTML+C#(staticwebserver+C#interpreter)Node.js=HTML+Node2.PHP背景知识PHP:PersonalHomePage=>PHPisHypertextPreprocessor(Zend)LAMPCombination=Linux+ApacheHttpd+MySQL+PHP3。搭建PHP开发环境(1)服务器端:下载并安装一个静态web服务器c:/xampp/apache/bin/httpd.exe(2)服务器端:下载并安装PHP解释器,集成Web服务器C:/xampp/php/php.exe(3)服务器端:编写静态/动态网页,保存在Web服务器C:/xampp/htdocs(4)服务器端:启动Web服务器,打开所需端口ApacheHttpd服务器占用80端口/443默认------------------------------------------(5)客户端:在浏览器中输入协议、地址和端口,访问Web服务器http://127.0.0.1:804。PHP中的变量和常量a=1;b=2;c=a+b;变量:其值可能发生变化的量,如人的年龄、用户的密码、商品的价格等。在PHP中声明一个变量:$variablename=value;#等号读作“赋值”,输出一个变量的值:echo$variablename;#输出变量值时不要加单引号常量:值不能改变,如PI,E。声明一个常量:constconstantname=value;输出一个常量值:echo常量名;变量名可以包含数字、字母和下划线,但不能以数字开头合法的:$age,$age2,$_age_2,$emp_age,非法的$empAge:$2age,$user-Name,$user包含数字、字母和下划线,但不能以数字开头;常量名习惯上全部大写合法:AGE、AGE2、EMP_AGEPHPPHP/JS的数据类型是一种“弱类型语言”——创建变量时无需指定类型,变量可以被赋值给不同类型的值$i=10;$i='Hello';$i=true;echo$变量名;只能用于输出变量的值;var_dump($变量名);可用于输出变量的类型和值。PHP中的数据类型-详情请参考参考手册《语言参考》:1)4种标量/值/基本类型(1)int/integer:整数-2147483648~2147483647(2)float/double:十进制float和doublecomplete同理(3)string:string(4)bool/boolean:Boolean,只能取值true/false/TRUE/FALSE2)2复合类型(5)array:array(6)object:object3)2其他类型(7)null:empty(8)resource:resource注意:(1)整数值超过int的最大范围(2147483647),自动变成flaot类型(2)如果echo输出为booltrue'1',false使用echo输出空字符串(3)字符串可以用单引号/双引号括起来;细微差别:如果单引号字符串中有变量名,则直接输出为变量名;并且字符串变量名中有双引号,那么输出就是变量的值——双引号没有计算能力:"$a+$b"(4)两个字符串连接起来使用。六、PHP中的运算符PHP中的运算符分为以下几类:(1)算术运算符:+-*/%++--(2)比较运算符:><...(3)逻辑运算符:&&||!(4)位运算符号:<<>>(5)赋值运算符:=....(6)拼接运算符:。(7)三元运算符:?:3.算术运算符/%++(自增1)--(自减1)说明:(1)+只用于算术运算,不用于字符串拼接!(2)+作用于字符串,会发生隐式转换:尝试解析出字符串中的数字,尽可能多地解析数字。(3)+作用于Boolean,发生隐式转换:true转换为1,false转换为0。(4)%表示取余运算/取模运算,2018%4的结果为2,一般用于判断一个数是否可??以被另一个数整除。(5)一个数在原基础上加1的计算方法有3种:$n1=$n1+1;$n1++;#运行速度更快!++$n1;4、比较运算符=<<===!====(等于)!==(不等同)解释:$result=$score1>$score2;(1)比较运算的结果是真还是假。(2)默认情况下,如果与==比较,1与true相等;0和false等于""-==运算符将执行自动“隐式转换”。(3)如果比较操作不需要自动隐式转换,只要类型不同,直接判断不相等。使用===5。逻辑运算符&&(和/和)||(或)!(否定/不)$c=50;$m=80;判断语文和数学是否通过:$c>=60&&$m>=60对于&&操作:true&&true=>truefalse&&true=>falsetrue&&false=>falsefalse&&false=>false判断语文和数学是否通过通过:$c>=60||$m>=60对于||操作:真||真=>真假||真=>真真||假=>真假||false=>false判断语言是否失败:!($c>=60)为了!手术:!真=>假!假=>真7.逻辑:短路逻辑和“短路”效果中的操作:false&&?=>假的?不会被执行或运行中的“短路”效应:true||?=>真的吗?不会被执行8.位运算符编号以二进制(位)形式进行运算。<<(bitwiseleftshift)>>(bitwiserightshift)面试题:现在有一个变量$num=5,计算$num*16最快的方法是:(a)$num=$num*16;(b)$num*=16;(c)$num*=4;(d)$num<<4;(e)$num<<16;结论:一个数向左移动N位,相当于原数*2^N;一个数向右移动N位,相当于原数/2^N;9.赋值运算符=+=-=*=/=%=$n=30;$n=$n+5;$n+=5;//效果等同于上一行$n=$n-5;$n-=5;//效果等同于上一行10.字符串拼接操作。.=$uname='汤姆';$uname=$uname。'先生。';$uname.='先生';//效果等同于上一行一元运算符:$a++二元运算符:$a+$b三元运算符:$a?$b:$c11。三元运算符?:语法:表达式1?expression2:expression3Meaning:(if.??..otherwise...)ifexpression1如果值为真,则返回表达式2的值,否则返回表达式3的值Example:$sex=1;$结果=$性别===0?'女人男人';回声$结果;12。程序=数据+算法1.算法的基本结构(1)顺序执行(2)选择性执行(3)循环执行2.程序逻辑结构-顺序执行3.程序逻辑结构-选择/分支执行之一ProgramV2.0:如果购物总金额超过500,您将获得20%的折扣。最基本的选择执行的代码:if(条件判断){//条件判断结果为真时执行的代码}Statement1;if(条件判断){语句2;}语句3;如果条件判断为真,执行顺序:1=>2=>3如果条件判断为假,执行顺序:1=>3收银程序V3.0:如果支付的金额足够对于商品的总金额Price,计算变化和输出;否则输出错误提示"If...Otherwise..."逻辑语法结构:if(条件判断){//条件判断为真时执行的语句}else{//条件判断为假时执行的语句}statement1;if(条件判断){statement2;}else{statement3;}statement4;条件判断为真,执行顺序:1=>2=>4条件判断为假,执行顺序:1=>3=>4"if...else..."有两种写法.嵌套问题”:(1)if(){}else{if(){}else{}}(2)if(){}elseif(){}elseif(){}else{}if1+elseifN+else*1总结:(1)if(){}(2)if(){}else{}(3)if(){}else{if(){}else{}}(4)if(){}否则如果(){}。..else{}4.程序逻辑结构-选择/分支执行2switch...case...break选择分支结构:多个不同“情境”下的“切换”语法:switch(变量名){casevalue1:#if(变量名==值1)语句1;casevalue2:#if(variablename==value2)statement2;....默认:#else....语句n;}含义:如果指定变量等于值1,则执行语句1;否则,如果它等于值2,则执行语句2...。否则,执行语句n。注意:默认情况下,如果switch判断出一个相等条件,就会执行该条件中的执行语句以及后续的所有条件——必须和break关键字一起使用。5、程序逻辑结构——循环结构之一循环:多次执行相同或相似的代码两个循环要素:(1)循环体(2)循环条件第一个循环结构:while(循环条件判断){//循环body}含义:执行条件判断,为真则执行一次循环体;再次执行条件判断...直到循环体执行一次,再执行条件判断为假,则退出循环,继续执行后续语句13.循环结构2-do...while...语法:do{循环体;}while(循环条件);while...先判断再执行do..while..先执行再判断$i=0;while($i<5){echo'Hello';$i++;}$i=0;do{echo'你好';$i++;}while($i<5);$i=10;while($i<5){echo'你好';$i++;}$i=10;do{echo'你好';$i++;}while($i<5);while循环体可能执行0~N次do..while循环体可能执行1~N次14.第三个循环结构——for...——重点掌握语法:for(expression1;expression2;expression3){循环体;含义:首先执行“表达式1”并且只执行一次;然后执行“表达式2”的判断,如果为真,则执行一次循环体;再次执行“表达式3”,再执行“表达式2”判断,如果为真,继续执行循环体……直到为假,退出循环。总结:“表达式1”在循环开始前执行一次——一般用于声明循环变量;“表达式2”在每个body执行之前执行一次——一般用于执行循环判断条件;“表达式3”在每次执行主体后执行——一般用于执行循环变量的递增和递减。$i=0;while($i<5){echo'你好';$i++;}for($i=0;$i<5;$i++){echo'Hello';}while和for具有相同的功能!只是为了更紧凑!for循环中的所有三个表达式都可以为空。在循环中使用break关键字:打断当前循环,不再执行,跳出循环for($i=1;$i<10;$i++){if($i==5){break;}echo"$i";}//1/2/3/4while(true){...break;...}for(;;){...break;...}在loop:跳过这第二个循环,继续下一个循环for($i=1;$i<10;$i++){if($i==5){continue;}echo"$i";}//1/2/3/4/6/7/8/915.PHP数据类型:复合类型——数组表示一个学生的成绩:$score=90;#一个标量可以代表100个学生的成绩:$score1=85;$score2=98;$score3=77;....结论:一个标量类型的变量只能存储一个数据;如果要在变量中存储N个值,可以使用复合类型“数组(Array)”创建数组语法:$变量名=[值1,值2,....值n];$变量名=[];获取数组的元素个数/数组的长度:echocount($variablename);操作数组中的一个元素——使用元素的下标/索引:$variablename[subscript]=value;#修改指定下标处的元素值echo$变量名[下标];#输出指定下标处元素的值向数组中添加一个新元素:$variablename[]=value;#新建元素会自动获取一个新的下标思路:创建一个数组保存用户信息,号码,学生商城用户名,密码,注册时间,当前是否在线。$user=[134773434,'汤姆','1232132',123434434,1];01234数据说明不佳!16、PHP中有两种数组:(1)索引数组:每个元素的下标是一个数字$arr=['tom','mary','king'];$arr=[24,35,55,28,29];索引数组适用于“同一类型的多个数据”(2)关联数组:每个元素的下标为字符串$user=['uid'=>1234,'uname'=>'tom','regTime'=>1232341343,'upwd'=>'123234'];注意:关联数组的每个元素的下标都是自定义的字符串!不能用for循环遍历!17.第四种循环结构——foreach循环语法:foreach只用于遍历数组(尤其是关联数组)foreach($arraynameas$elementvariablename){//循环体}foreach($arraynameas$subscriptvariablename=>$elementvariablename){//loopbody}含义:对于数组中的每一个元素,都视为一个指定的变量,对每个这样的变量执行一次指定的循环体。例子:$ageList=[20,23,21,25];foreach($ageListas$v){echo"$v
";}==================$user=['uid'=>101,'uname'=>'tom'];foreach($useras$v){echo"$v
";}18.PHP中的预定义数组——难!预定义:由PHP解释器自己创建,程序员无需声明即可直接使用。PHP预定义了以下数组变量:$_GET$_POST$_COOKIE$_FILES$_REQUEST:保存客户端向服务器提交的“请求”数据$_SESSION以上变量默认都是array(0){}在Web项目中,客户端如何从端(浏览器)向服务器传输数据:http://127.0.0.1/login.php?uname=tom&upwd=123PHP服务器会自动在$_REQUEST数组中存储如下数据:$_REQUEST['uname']='汤姆';$_REQUEST['upwd']='123';程序员如何读取客户端提交的数据:echo$_REQUEST['uname'];//tomecho$_REQUEST['upwd'];//12319.函数的基本认识-高手函数:函数体/函数,用来封装一段需要重复执行/难写的代码-饺子机。声明一个函数:函数函数名(){//函数体}执行/调用一个函数:函数名();声明一个带参数的函数:函数函数名(参数名1,参数名2,...){//函数体}执行/调用一个函数:函数名(值1,值2,...);声明函数时指定的参数实际上是变量名——形参;调用函数时给出指定的具体值——实参。声明一个有返回值的函数:function函数名([参数名1,参数名2,...]){//函数体返回函数运行的结果值;//应该是整个函数的最后一句}execute/调用一个有返回值的函数:$变量名=函数名([value1,value2,...]);使用变量接收函数的返回值。20.PHPPredefinedFunctions——访问MySQL数据库必备函数——重点难点Tips:历史上PHP官方提供了两套访问MySQL服务器的函数:使用MySQLI函数库访问数据库服务器(同管理员命令行访问数据库的步骤):(1)连接数据库服务器$conn=mysqli_connect(...);(2)向服务器提交SQL语句执行$sql="INSERT/DELETE/UPDATE/SELECT...";$result=mysqli_query($conn,$sql);(3)查看执行结果if($result===false){//执行失败}else{//执行成功}(4)关闭与数据库服务器的连接(可省略)mysqli_close($conn);21.面试题:$i++和++$i的异同。$i++:先取值后加++$i:先加后取值$i=10;$j=$i++;#取出$i的值(10)赋值给$j;然后$i添加1echo$i,$j;#11,10$i=10;$j=++$i;#先给$i加1变成11;然后取它的值赋值给$j(11)echo$i,$j;#11,11
