Home > headlines > body text

Summary and sharing of PHP backend knowledge points

小云云
Release: 2018-02-28 15:37:58
Original
5302 people have browsed it

This article mainly shares with you a summary of PHP back-end knowledge points. Let us first introduce the web server to you. I hope this article can help you.

1.Web server

The role of the Web server: receive requests from clients (PC/PAD/PHONE), search for required data (files/databases/other systems), Sent back to client.
Web servers are divided into two types:
(1) Static Web server: The content provided is the same for anyone at any time

静态Web内容:HTML/CSS/JS/Flash/GIF/音视频...
常见的静态Web服务器:Apache Httpd、MS IIS、NginX
Copy after login

(2) Dynamic Web server: The content provided is different People may change at different times

动态Web内容:
    JSP = HTML + Java(静态Web服务器+Java解释器)
    PHP = HTML + PHP(静态Web服务器+PHP解释器)
    ASP.NET = HTML + C#(静态Web服务器+C#解释器)
    Node.js = HTML + Node
Copy after login

2. PHP background knowledge

PHP: Personal Home Page => PHP is Hypertext Preprocessor (Zend)
LAMP combination = Linux + ApacheHttpd + MySQL + PHP

3. Build a PHP development environment

(1) Server side: Download and install a static Web server

c:/xampp/apache/bin/httpd.exe
Copy after login

(2) Server side: Download and install PHP interpreter, integrated with the Web server

C:/xampp/php/php.exe
Copy after login

(3) Server side: Write static/dynamic web pages and save them on the Web server

C:/xampp/htdocs
Copy after login

(4) Server side: Start the Web server and open Required port

ApacheHttpd服务器默认占用80/443端口
Copy after login

---------------------------------------- ---
(5) Client: Enter the protocol, address, and port in the browser to access the Web server

http://127.0.0.1:80
Copy after login

4. Variables and constants in PHP

a = 1;
b = 2;
c = a + b;
Copy after login

Variables: value Quantities that may change, such as a person's age, a user's password, and the price of an item.

PHP中声明一个变量:
    $变量名 = 值;         #等号读作“赋值”
输出一个变量的值:
    echo $变量名;         #输出变量值时不加单引号
Copy after login

Constant: A quantity whose value cannot change, such as PI and E.

声明一个常量:
    const  常量名  =  值;
输出一个常量值:
    echo  常量名;
Copy after login

The variable name can contain numbers, letters, and underscores, but it cannot start with a number
Legal: $age, $age2, $_age_2, $emp_age, $empAge
Illegal: $2 age, $user-Name, $user Name
Constant names can contain numbers, letters, and underscores, but cannot start with numbers; it is customary to use all uppercase characters for constant names
Legal: AGE, AGE2, EMP_AGE

  1. Data types in PHP


PHP/JS is a "weakly typed language" - there is no need to specify a type when creating a variable, a Variables can be assigned values ​​of different types one after another

$i = 10;
$i = 'Hello';
$i = true;
Copy after login

echo $variable name; can only be used to output the value of the variable;
var_dump($variable name); can be used to output the type and value of the variable.

Data types in PHP - for details, please check the reference manual "Language Reference":
1) 4 scalar/value/basic types

(1)int/integer:整数  -2147483648~2147483647
(2)float/double:小数  float和double完全一样
  (3)string:字符串
(4)bool/boolean:布尔,只能取值为true / false / TRUE / FALSE
Copy after login

2) 2 composite types

(5)array:数组
(6)object:对象
Copy after login

3) 2 other types

(7)null:空
(8)resource:资源
Copy after login

Note:
(1) The integer value exceeds the maximum range of int (2147483647) and automatically becomes a flat type
(2) If bool's true is output using echo, it will be output as '1', and if false is output using echo, it will be an empty string
(3) string can be enclosed in single quotes/double quotes; subtle difference: if there is a variable name in the single quoted string, Then the output is directly as the variable name; if there is a variable name in double quotes, the output is the value of the variable - there is no arithmetic capability in double quotes: "$a+$b"
(4) Two strings are spliced ​​using .

6.Operators in PHP

Operators in PHP are divided into the following categories:
(1) Arithmetic operators: + - * / % + + --
(2) Comparison operators: > < ...
(3) Logical operators: && || !
(4) Bit operators: << > >
(5) Assignment operator: = ....
(6) Splicing operator: .
(7) Ternary operator: ?:

3. Arithmetic Operator


    • / % ++(increment by 1) --(decrement by 1)


Instructions:
(1)+ is only used for arithmetic operations, no need to do string concatenation!
(2) When + acts on a string, implicit conversion will occur: try to parse out the numbers in the string, and parse as many as you can.
(3)+ Acts on Boolean, implicit conversion will occur: true is converted to 1, false is converted to 0.
(4)% represents the remainder operation/modulo operation. The result of 2018%4 is 2. It is generally used to determine whether a number can be divided by another number.
(5) Calculate a number based on the original + 1. There are three methods:

$n1 = $n1 + 1;
$n1 ++;   #运算速度更快!
 ++ $n1;
Copy after login

4. Comparison operator

=   < <= == != ===(全等于) !==(不全等)
说明: $result = $score1 >  $score2;
 (1)比较运算的结果为 true 或  false  。
 (2)默认情况下,用==比较的话,1和true是相等的;0和false和""是相等的 ——  ==运算符会进行自动的“隐式转换”。
 (3)若比较运算中不希望出现自动的隐式转换,只要类型不同直接判定为不等使用 ===

5.逻辑运算符
 &&(并且/与)    ||(或)      !(取反/非)
 $c = 50;     $m = 80;
 判定语文和数学是否都及格了:   $c>=60  &&  $m>=60
对于&&运算:
true && true  =>  true
false && true  =>  false
true && false  =>  false
false && false  =>  false
 判定语文和数学有一科及格吗:   $c>=60  ||  $m>=60
对于||运算:
true || true  =>  true
false || true  =>  true
true || false  =>  true
false || false  =>  false
 判定语文是否为不及格:    !($c>=60)
对于!运算:
! true  =>  false
! false  =>  true

7.逻辑:短路逻辑

与运算中的“短路”效果:
 false  &&  ?   =>  false        ?将不会被执行
或运算中的“短路”效果:
 true  ||  ?  =>  true             ?将不会被执行

8.位运算符

数字按照二进制(bit位)形式进行运算。
 <<(按位左移) >>(按位右移)
面试题:现在有变量 $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 = 'tom';
$uname = $uname . '先生';
$uname .= '先生'; //效果等价于上一行

单目运算符: $a++
双目运算符: $a + $b
三目运算符: $a ? $b : $c

11.三目运算符

?:
语法: 表达式1 ? 表达式2 : 表达式3
含义:(如果...否则...)如果表达式1的值为true,则返回表达式2的值,否则返回表达式3的值
示例: $sex = 1;

    $result =  $sex===0  ?  &#39;女&#39;  :  &#39;男&#39;  ;
    echo $result;
Copy after login

12.程序 = 数据 + 算法

1.算法的基本结构
(1)顺序执行
(2)选择执行
(3)循环执行

2.程序逻辑结构 —— 顺序执行

3.程序逻辑结构—— 选择/分支执行之一
收银台程序 V2.0: 若购物总金额满500,则打八折

选择执行的最基础代码:

if( 条件判定 ){
    //条件判定结果为true时执行的代码
}
Copy after login

语句1;
if( 条件判定 ){
语句2;
}
语句3;
如果条件判定为true,执行顺序: 1=>2=>3
如果条件判定为false,执行顺序: 1=>3

收银台程序 V3.0: 若已付金额足够商品总价格,计算找零并输出;否则输出错误提示

"如果...否则..."逻辑的语法结构:

if( 条件判定 ){
    //条件判定为true时执行的语句
}else {
    //条件判定为false时执行的语句
}
Copy after login

语句1;
if( 条件判定 ){
  语句2;
}else {
  语句3;
}
语句4;
条件判定为true,执行顺序: 1=>2=>4
条件判定为false,执行顺序: 1=>3=>4

关于"if...else....的嵌套问题"有两种编写方法:
(1)    if(  ){

}else {
    if(){
    }else {
    }
}
Copy after login

(2)    if(  ){

}else if(  ){
}else if(  ){
}else {
}
Copy after login

if1 + else ifN + else*1

小结:
(1)  if( ){   }
(2)  if( ){   }else{   }
(3)  if( ){   }else{  if(){}else{}  }
(4)  if( ){   }else if( ){  }... else{  }

4.程序逻辑结构—— 选择/分支执行之二
 switch...case...break选择分支结构:在多个不同“情形下”进行“切换”。
 语法:    switch( 变量名 ){

        case  值1:            #if(变量名==值1)
            语句1;
        case  值2:            #if(变量名==值2)
            语句2;
        ....
        default:                #else....
            语句n;
    }
Copy after login

含义:若指定变量等于值1,则执行语句1;否则若等于值2,则执行语句2.... 否则执行语句n。
 注意:默认情况下,switch若判定了某个相等条件则执行该条件以及后续所有条件中的执行语句 —— 必须配合break关键字使用。

5.程序逻辑结构 —— 循环结构之一
 循环:多次执行相同或相似的代码
 循环二要素: (1)循环体   (2)循环条件
 第一种循环结构:

while( 循环条件判定 ){
    //循环体
}
Copy after login

含义:执行条件判定,若为true,则执行一次循环体;再次执行条件判定.....直到某次执行完循环体,再去执行条件判定为false,则退出循环,继续执行后面的语句

13.循环结构之二 —— do...while...

语法:

do{
    循环主体;
}while( 循环条件 );
Copy after login

while...先判定后执行    do..while..先执行再判定
$i=0;
while($i<5){
echo 'Hello'; $i++;
} $i=0;
do{
echo 'Hello'; $i++;
} while($i<5);
$i=10;
while($i<5){
echo 'Hello'; $i++;
} $i=10;
do{
echo 'Hello'; $i++;
} while($i<5);
while循环主体可能执行0~N次 do..while循环主体可能执行1~N次

14.循环结构之三 —— for... —— 重点掌握

语法:

for(  表达式1 ;  表达式2 ;  表达式3 ){
    循环主体;
}
Copy after login

含义:首先执行且仅执行一次“表达式1”;

再执行“表达式2”的判定,若为true,执行一次循环主体;
再执行一次“表达式3”,再去执行“表达式2”的判定,
若为true继续执行一次循环主体.....  直到为false,退出循环。
Copy after login

总结:
“表达式1”在循环开始前执行一次——一般用于声明循环变量;
“表达式2”在每次主体执行前都执行一次——一般用于执行循环判定条件;
“表达式3”在每次主体执行后都执行一次——一般用于执行循环变量的增减。

$i = 0;
while( $i<5 ){
echo 'Hello';
$i++;
} for( $i=0; $i<5; $i++){
echo 'Hello';
}
while和for的功能一样!只是for更加紧凑!
for循环中的三个表达式都可以为空。

循环中使用break关键字: 打断当前循环,不再执行,跳出循环
for($i=1; $i<10; $i++){
if($i==5){

  break;
Copy after login

}
echo "$i";
}
//1/2/3/4
while(true){ ...break;... } for( ; ; ){ ...break;... }
循环中使用continue关键字:跳过此次循环,继续下一次循环
for($i=1; $i<10; $i++){
if($i==5){

  continue;
Copy after login

}
echo "$i";
}
//1/2/3/4/6/7/8/9

15.PHP中的数据类型:复合类型 —— array

表示一个学生的成绩: $score = 90; #一个标量即可
表示100个学生的成绩:

$score1 = 85;
$score2 = 98;
$score3 = 77;
....
Copy after login

结论:一个标量类型的变量只能存储一个数据;若想一个变量中存储N个值,可以使用复合类型“数组(Array)”
创建一个数组的语法:

$变量名 = [ 值1, 值2, .... 值n ];
$变量名 = [  ];
Copy after login

获取数组中元素的个数/数组的长度:

echo  count($变量名);
Copy after login

操作数组中的某个元素——使用元素的下标/索引(index):

$变量名[下标] = 值;     #修改指定下标处的元素值
echo $变量名[下标];        #输出指定下标处的元素值
Copy after login

向数组中添加新元素:

$变量名[ ] = 值;     #新的元素会自动获取新的下标
Copy after login

思考:创建一个数组,保存一个学子商城中用户的信息,编号、用户名、密码、注册时间、当前是否在线。
$user = [134773434, 'tom', '1232132', 123434434, 1];

       0           1      2          3      4
Copy after login

数据的说明性太差了!

16.PHP中数组分为两种类型:

(1)索引数组(Indexed Array):每个元素的下标是数字

$arr = [&#39;tom&#39;, &#39;mary&#39;, &#39;king&#39;];
$arr = [24, 35, 55, 28, 29];
索引数组适用于“类型相同的多个数据”
Copy after login

(2)关联数组(Association Array):每个元素的下标是字符串

$user = [&#39;uid&#39; =>1234, 'uname'=>'tom', 'regTime'=>1232341343,  'upwd'=>'123234'];</p>
<p>注意:关联数组每个元素的下标都是自定义的字符串!不能使用for循环进行遍历!</p>
<h2>17.循环结构之四 —— foreach循环</h2>
<p>语法:  foreach只用于遍历数组(尤其是关联数组)</p>
<pre class="brush:php;toolbar:false">foreach( $数组名  as  $元素变量名 ){
    //循环主体
}
foreach( $数组名  as  $下标变量名=>$元素变量名 ){
    //循环主体
}
Copy after login

含义:对于数组中的每个元素,都看做是一个指定的变量,对每个这样的变量执行一次指定的循环体
 示例:    $ageList = [20, 23, 21, 25];

    foreach( $ageList  as  $v){
        echo "$v<br>";
    }
    ==================
    $user = ['uid'=>101, 'uname'=>'tom'];
    foreach( $user  as  $v){
        echo "$v<br>";
    }
Copy after login

18.PHP中的预定义数组 —— 难点!

预定义:由PHP解释器自己创建的,程序员不需要声明可以直接使用的。PHP预定义了如下的数组变量:
 $_GET
 $_POST
 $_COOKIE
 $_FILES
 $_REQUEST:保存着客户端提交给服务器的“请求”数据
 $_SESSION
上述变量默认都是 array(0){ }

Web项目中,客户端(浏览器)如何给服务器传数据:

http://127.0.0.1/login.php?uname=tom&upwd=123
Copy after login

PHP服务器会自动把?后面的数据存储到$_REQUEST数组中:

$_REQUEST['uname'] = 'tom';
$_REQUEST['upwd'] = '123';
Copy after login

程序员如何读取客户端提交的数据:

echo  $_REQUEST['uname'];     //tom
echo  $_REQUEST['upwd'];      //123
Copy after login

19.函数基础认识 —— 掌握

Function:功能体/函数,用于封装一段需要反复执行/不易编写的代码 —— 饺子机。
 声明一个函数:

function 函数名( ){
    //函数主体
}
Copy after login

执行/调用一个函数:

函数名( );
Copy after login

声明一个带参数的函数:

function 函数名(参数名1,  参数名2, ... ){
    //函数主体
}
Copy after login

执行/调用一个函数:

函数名( 值1, 值2, ... );
Copy after login

声明函数时指定的参数其实就是变量名——形式参数;调用函数时给出指定的具体的值——实际参数。

声明一个带返回值的函数:

function 函数名( [参数名1,  参数名2, ...] ){
    //函数主体
    return  函数运算的结果值; //应该是整个函数中最后一句
}
Copy after login

执行/调用一个有返回值函数:

$变量名 = 函数名( [值1, 值2, ...] );
Copy after login

使用一个变量接收函数的返回值。

20.PHP预定义函数 —— 访问MySQL数据库必需的函数 ——重点&难点

提示:历史上,PHP官方提供了两套访问MySQL服务器的函数:

mysql_xxxx( )   性能不够优秀
mysqli_xxxx( )    Improved:改进提升版
Copy after login

使用MySQLI函数库访问数据库服务器的步骤(与管理员从命令行中访问数据库的步骤一样):
 (1)连接到数据库服务器

$conn = mysqli_connect(...);
Copy after login

(2)提交SQL语句给服务器执行

$sql = "INSERT/DELETE/UPDATE/SELECT...";
$result = mysqli_query($conn,  $sql);
Copy after login

(3)查看执行结果

if($result===false){   //执行失败
}else{    //执行成功
}
Copy after login

(4)关闭到数据库服务器的连接(可以省略)

mysqli_close( $conn );
Copy after login

21.面试题:$i++和 ++$i 的异同。

$i++:先取值再自加
++$i:先自加再取值
$i = 10;
$j = $i++;      #先取出$i的值(10),赋值给$j;然后$i自加1
echo $i,  $j;      #11, 10
$i = 10;
$j = ++$i;     #先对$i自加1,变为11;再取其值赋给$j(11)
echo $i,  $j;     #11,  11

相关推荐:

关于2018年后端技术分析总结

浅谈2018年后端技术趋势

php学习之为什么说PHP适合做前端JAVA适合做后端?

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template