Maison > titres > Résumé et partage des points de connaissances backend PHP

Résumé et partage des points de connaissances backend PHP

小云云
Libérer: 2018-02-28 15:37:58
original
5331 Les gens l'ont consulté

Cet article partage principalement avec vous un résumé des points de connaissances du back-end PHP. Laissez-nous d'abord vous présenter le serveur Web. J'espère que cet article pourra vous aider.

1. Serveur Web

Le rôle du serveur Web : recevoir les requêtes des clients (PC/PAD/TÉLÉPHONE), trouver les données requises (fichiers/bases de données/autres systèmes), Renvoyé au client.
Les serveurs Web sont divisés en deux types :
(1) Serveur Web statique : Le contenu fourni est inchangé par quiconque à tout moment

静态Web内容:HTML/CSS/JS/Flash/GIF/音视频...
常见的静态Web服务器:Apache Httpd、MS IIS、NginX
Copier après la connexion

(2) Serveur Web dynamique : Le contenu fourni peut changer pour différentes personnes et à différents moments

动态Web内容:
    JSP = HTML + Java(静态Web服务器+Java解释器)
    PHP = HTML + PHP(静态Web服务器+PHP解释器)
    ASP.NET = HTML + C#(静态Web服务器+C#解释器)
    Node.js = HTML + Node
Copier après la connexion

2. Connaissances de base PHP

PHP : page d'accueil personnelle => PHP est un préprocesseur hypertexte (Zend)
Combinaison LAMP = Linux + ApacheHttpd + MySQL + PHP

3. Construire un environnement de développement PHP

(1) Côté serveur : Téléchargez et installez un serveur Web statique

c:/xampp/apache/bin/httpd.exe
Copier après la connexion

(2 ) Côté serveur : Téléchargez et installez l'interpréteur PHP, intégrez-le au serveur Web

C:/xampp/php/php.exe
Copier après la connexion

(3) Côté serveur : Écrivez des pages Web statiques/dynamiques et enregistrez-les sur le serveur Web

C:/xampp/htdocs
Copier après la connexion

( 4) Côté serveur : Démarrez le serveur Web et ouvrez les ports requis

ApacheHttpd服务器默认占用80/443端口
Copier après la connexion

----------------------- ------- ---------------
(5) Client : saisissez le protocole, l'adresse et le port dans le navigateur pour accéder au serveur Web

http://127.0.0.1:80
Copier après la connexion

4.PHP Variables et constantes

a = 1;
b = 2;
c = a + b;
Copier après la connexion

Variables : Montants dont les valeurs peuvent changer, comme l'âge d'une personne, le mot de passe d'un utilisateur et le prix d'un produit.

PHP中声明一个变量:
    $变量名 = 值;         #等号读作“赋值”
输出一个变量的值:
    echo $变量名;         #输出变量值时不加单引号
Copier après la connexion

Constante : Une quantité dont la valeur ne peut pas changer, comme PI et E.

声明一个常量:
    const  常量名  =  值;
输出一个常量值:
    echo  常量名;
Copier après la connexion

Les noms de variables peuvent contenir des chiffres, des lettres et des traits de soulignement, mais ne peuvent pas commencer par un chiffre
Légal : $age, $age2, $_age_2, $emp_age, $empAge
Illegal : $2age, $user-Name, $user Name
Le nom de constante peut contenir des chiffres, des lettres et des traits de soulignement, mais il ne peut pas commencer par un chiffre ; il est d'usage que les noms de constantes utilisent tous les caractères majuscules
Légal : AGE, AGE2, EMP_AGE

  1. Types de données en PHP


PHP/JS est un "langage faiblement typé" - aucun type n'est nécessaire à spécifier lors de la création de variables , une variable peut se voir attribuer successivement des valeurs de différents types

$i = 10;
$i = 'Hello';
$i = true;
Copier après la connexion

echo $variable name; ne peut être utilisé que pour afficher la valeur de la variable
var_dump( $nom de la variable); peut être utilisé pour afficher le type de la variable et sa valeur.

Types de données en PHP - pour plus de détails, veuillez consulter le manuel de référence "Language Reference" :
1) 4 types scalaires/valeurs/basiques

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

2) 2 types composites

(5)array:数组
(6)object:对象
Copier après la connexion

3) 2 autres types

(7)null:空
(8)resource:资源
Copier après la connexion

Remarque :
(1) La valeur entière dépasse la plage maximale de int (2147483647) et devient automatiquement le type plat
(2) Si la valeur bool's true est affichée par echo, elle sera affichée sous la forme '1', et si false est affichée par echo, ce sera une chaîne vide
(3) La chaîne peut être placée entre guillemets simples/ guillemets doubles ; différence subtile : si des guillemets simples s'il y a un nom de variable dans la chaîne, il sera directement affiché comme nom de variable ; s'il y a un nom de variable entre guillemets doubles, il sera affiché comme valeur de la variable ; - il n'y a pas de capacité arithmétique entre guillemets : "$a+$b"
(4) Deux chaînes sont concaténées à l'aide du symbole .

6. Opérateurs en PHP

Opérateurs en PHP sont répartis dans les catégories suivantes :
(1) Opérateurs arithmétiques : + - * / % ++ --
(2) Opérateurs de comparaison : > && || !
(4) Opérateurs de bits : << >>
(5) Opérateur d'affectation : = ....
(6) Opérateur d'épissage : .
(7 ) Opérateur ternaire : ?:

3. Opérateurs arithmétiques


    • / % ++ (incrémenter de 1) --( Décrémenter 1)


Remarque :

(1)+ n'est utilisé que pour les opérations arithmétiques, pas utilisé Faites la concaténation de chaînes !
(2) Lorsque + agit sur une chaîne, une conversion implicite se produira : essayez d'analyser les nombres dans la chaîne et analysez-en autant que possible.
(3) Lorsque + agit sur un booléen, une conversion implicite se produira : vrai est converti en 1, faux est converti en 0.
(4)% représente l'opération reste/opération modulo. Le résultat de 2018%4 est 2. Il est généralement utilisé pour déterminer si un nombre peut être divisé par un autre nombre
(5) Calculer un nombre en fonction de l'original + 1. Il existe trois méthodes :

$n1 = $n1 + 1;
$n1 ++;   #运算速度更快!
 ++ $n1;
Copier après la connexion
4. Opérateur de comparaison

.

=   < <= == != ===(全等于) !==(不全等)
说明: $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;
Copier après la connexion

12.程序 = 数据 + 算法

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

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

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

选择执行的最基础代码:

if( 条件判定 ){
    //条件判定结果为true时执行的代码
}
Copier après la connexion

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

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

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

if( 条件判定 ){
    //条件判定为true时执行的语句
}else {
    //条件判定为false时执行的语句
}
Copier après la connexion

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

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

}else {
    if(){
    }else {
    }
}
Copier après la connexion

(2)    if(  ){

}else if(  ){
}else if(  ){
}else {
}
Copier après la connexion

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;
    }
Copier après la connexion

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

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

while( 循环条件判定 ){
    //循环体
}
Copier après la connexion

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

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

语法:

do{
    循环主体;
}while( 循环条件 );
Copier après la connexion

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 ){
    循环主体;
}
Copier après la connexion

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

再执行“表达式2”的判定,若为true,执行一次循环主体;
再执行一次“表达式3”,再去执行“表达式2”的判定,
若为true继续执行一次循环主体.....  直到为false,退出循环。
Copier après la connexion

总结:
“表达式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;
Copier après la connexion

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

  continue;
Copier après la connexion

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

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

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

$score1 = 85;
$score2 = 98;
$score3 = 77;
....
Copier après la connexion

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

$变量名 = [ 值1, 值2, .... 值n ];
$变量名 = [  ];
Copier après la connexion

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

echo  count($变量名);
Copier après la connexion

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

$变量名[下标] = 值;     #修改指定下标处的元素值
echo $变量名[下标];        #输出指定下标处的元素值
Copier après la connexion

向数组中添加新元素:

$变量名[ ] = 值;     #新的元素会自动获取新的下标
Copier après la connexion

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

       0           1      2          3      4
Copier après la connexion

数据的说明性太差了!

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

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

$arr = [&#39;tom&#39;, &#39;mary&#39;, &#39;king&#39;];
$arr = [24, 35, 55, 28, 29];
索引数组适用于“类型相同的多个数据”
Copier après la connexion

(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  $下标变量名=>$元素变量名 ){
    //循环主体
}
Copier après la connexion

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

    foreach( $ageList  as  $v){
        echo "$v<br>";
    }
    ==================
    $user = ['uid'=>101, 'uname'=>'tom'];
    foreach( $user  as  $v){
        echo "$v<br>";
    }
Copier après la connexion

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

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

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

http://127.0.0.1/login.php?uname=tom&upwd=123
Copier après la connexion

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

$_REQUEST['uname'] = 'tom';
$_REQUEST['upwd'] = '123';
Copier après la connexion

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

echo  $_REQUEST['uname'];     //tom
echo  $_REQUEST['upwd'];      //123
Copier après la connexion

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

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

function 函数名( ){
    //函数主体
}
Copier après la connexion

执行/调用一个函数:

函数名( );
Copier après la connexion

声明一个带参数的函数:

function 函数名(参数名1,  参数名2, ... ){
    //函数主体
}
Copier après la connexion

执行/调用一个函数:

函数名( 值1, 值2, ... );
Copier après la connexion

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

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

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

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

$变量名 = 函数名( [值1, 值2, ...] );
Copier après la connexion

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

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

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

mysql_xxxx( )   性能不够优秀
mysqli_xxxx( )    Improved:改进提升版
Copier après la connexion

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

$conn = mysqli_connect(...);
Copier après la connexion

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

$sql = "INSERT/DELETE/UPDATE/SELECT...";
$result = mysqli_query($conn,  $sql);
Copier après la connexion

(3)查看执行结果

if($result===false){   //执行失败
}else{    //执行成功
}
Copier après la connexion

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

mysqli_close( $conn );
Copier après la connexion

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适合做后端?

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal