Heim >Schlagzeilen >Zusammenfassung und Weitergabe von PHP-Backend-Wissenspunkten
Die Rolle des Webservers: Anfragen von Clients empfangen (PC/PAD/TELEFON), benötigte Daten finden (Dateien/Datenbanken/andere Systeme), An den Kunden zurückgeschickt.
Webserver werden in zwei Typen unterteilt:
(1) Statischer Webserver: Der bereitgestellte Inhalt bleibt jederzeit für jedermann unverändert
静态Web内容:HTML/CSS/JS/Flash/GIF/音视频... 常见的静态Web服务器:Apache Httpd、MS IIS、NginX
(2) Dynamischer Webserver: Der bereitgestellte Inhalt kann sich für verschiedene Personen und zu unterschiedlichen Zeiten ändern
动态Web内容: JSP = HTML + Java(静态Web服务器+Java解释器) PHP = HTML + PHP(静态Web服务器+PHP解释器) ASP.NET = HTML + C#(静态Web服务器+C#解释器) Node.js = HTML + Node
PHP: Persönliche Homepage => PHP ist Hypertext-Präprozessor (Zend)
LAMP-Kombination = Linux + ApacheHttpd + MySQL + PHP
(1) Serverseitig: Laden Sie einen statischen Webserver herunter und installieren Sie ihn
c:/xampp/apache/bin/httpd.exe
(2 ) Serverseitig: Laden Sie den PHP-Interpreter herunter und installieren Sie ihn, integrieren Sie ihn in den Webserver
C:/xampp/php/php.exe
(3) Serverseitig: Schreiben Sie statische/dynamische Webseiten und speichern Sie sie auf dem Webserver
C:/xampp/htdocs
( 4) Serverseite: Starten Sie den Webserver und öffnen Sie die erforderlichen Ports
ApacheHttpd服务器默认占用80/443端口
------------------------------------- ------- ---------------
(5) Client: Geben Sie das Protokoll, die Adresse und den Port in den Browser ein, um auf den Webserver zuzugreifen
http://127.0.0.1:80
a = 1; b = 2; c = a + b;
Variablen: Beträge, deren Werte sich ändern können, z. B. das Alter einer Person, das Passwort eines Benutzers und der Preis eines Produkts.
PHP中声明一个变量: $变量名 = 值; #等号读作“赋值” 输出一个变量的值: echo $变量名; #输出变量值时不加单引号
Konstante: Eine Größe, deren Wert sich nicht ändern kann, wie z. B. PI und E.
声明一个常量: const 常量名 = 值; 输出一个常量值: echo 常量名;
Variablennamen können Zahlen, Buchstaben und Unterstriche enthalten, dürfen aber nicht mit einer Zahl beginnen
Zulässig: $age, $age2, $_age_2, $emp_age, $empAge
Unzulässig: $2age, $user-Name, $user Name
Der Konstantenname kann Zahlen, Buchstaben und Unterstriche enthalten, aber er darf nicht mit einer Zahl beginnen; es ist üblich, dass bei Konstantennamen ausschließlich Großbuchstaben verwendet werden
Zulässig: AGE, AGE2, EMP_AGE
Datentypen in PHP
PHP/JS ist eine „schwach typisierte Sprache“ – kein Typ erforderlich beim Erstellen von Variablen anzugeben, einer Variablen können nacheinander Werte verschiedener Typen zugewiesen werden
$i = 10; $i = 'Hello'; $i = true;
echo $variable name; kann nur zur Ausgabe des Werts der Variablen verwendet werden;
var_dump( $Variablenname) kann verwendet werden, um den Typ der Variablen und den Wert auszugeben.
Datentypen in PHP – Einzelheiten finden Sie im Referenzhandbuch „Sprachreferenz“:
1) 4 Skalar-/Wert-/Basistypen
(1)int/integer:整数 -2147483648~2147483647 (2)float/double:小数 float和double完全一样 (3)string:字符串 (4)bool/boolean:布尔,只能取值为true / false / TRUE / FALSE
2) 2 zusammengesetzte Typen
(5)array:数组 (6)object:对象
3) 2 andere Typen
(7)null:空 (8)resource:资源
Hinweis:
(1) Der ganzzahlige Wert überschreitet den maximalen Bereich von int (2147483647) und wird automatisch zum flachen Typ
(2) Wenn „true“ von bool per Echo ausgegeben wird, wird es als „1“ ausgegeben, und wenn „false“ per Echo ausgegeben wird, ist es eine leere Zeichenfolge
(3) Zeichenfolge kann in einfache Anführungszeichen eingeschlossen werden/ doppelte Anführungszeichen; subtiler Unterschied: Wenn ein Variablenname in der Zeichenfolge vorhanden ist, wird dieser direkt als Variablenname ausgegeben. Wenn ein Variablenname in doppelten Anführungszeichen steht, wird er als Wert der Variablen ausgegeben - Es gibt keine arithmetische Möglichkeit in doppelten Anführungszeichen: „$a+$b“
(4) Zwei Zeichenfolgen werden mit dem Symbol verkettet
Operatoren in PHP sind in folgende Kategorien unterteilt:
(1) Arithmetische Operatoren: + - * / % ++ --
(2) Vergleichsoperatoren: > && ||. !
(4) Bitoperatoren: << >>
(5) Zuweisungsoperator: = ....
(6) Spleißoperator: .
(7 ) Ternärer Operator: ?:
(1)+ wird nur für arithmetische Operationen verwendet, nicht verwendet String-Verkettung durchführen!
(2) Wenn + auf eine Zeichenfolge einwirkt, erfolgt eine implizite Konvertierung: Versuchen Sie, die Zahlen in der Zeichenfolge zu analysieren, und zwar so viele wie möglich.
(3) Wenn + auf Boolesch einwirkt, erfolgt eine implizite Konvertierung: true wird in 1 konvertiert, false wird in 0 konvertiert.
(4)% stellt die Restoperation/Modulo-Operation dar. Das Ergebnis von 2018%4 ist 2. Es wird im Allgemeinen verwendet, um zu bestimmen, ob eine Zahl durch eine andere Zahl geteilt werden kann.
(5) Berechnen Sie eine Zahl basierend auf das Original + 1. Es gibt drei Methoden:
$n1 = $n1 + 1; $n1 ++; #运算速度更快! ++ $n1;4
= < <= == != ===(全等于) !==(不全等)
说明: $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
与运算中的“短路”效果:
false && ? => false ?将不会被执行
或运算中的“短路”效果:
true || ? => true ?将不会被执行
数字按照二进制(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;
= += -= *= /= %=
$n = 30;
$n = $n + 5;
$n += 5; //效果等价于上一行
$n = $n - 5;
$n -= 5; //效果等价于上一行
. .=
$uname = 'tom';
$uname = $uname . '先生';
$uname .= '先生'; //效果等价于上一行
单目运算符: $a++
双目运算符: $a + $b
三目运算符: $a ? $b : $c
?:
语法: 表达式1 ? 表达式2 : 表达式3
含义:(如果...否则...)如果表达式1的值为true,则返回表达式2的值,否则返回表达式3的值
示例: $sex = 1;
$result = $sex===0 ? '女' : '男' ; echo $result;
1.算法的基本结构
(1)顺序执行
(2)选择执行
(3)循环执行
2.程序逻辑结构 —— 顺序执行
3.程序逻辑结构—— 选择/分支执行之一
收银台程序 V2.0: 若购物总金额满500,则打八折
选择执行的最基础代码:
if( 条件判定 ){ //条件判定结果为true时执行的代码 }
语句1;
if( 条件判定 ){
语句2;
}
语句3;
如果条件判定为true,执行顺序: 1=>2=>3
如果条件判定为false,执行顺序: 1=>3
收银台程序 V3.0: 若已付金额足够商品总价格,计算找零并输出;否则输出错误提示
"如果...否则..."逻辑的语法结构:
if( 条件判定 ){ //条件判定为true时执行的语句 }else { //条件判定为false时执行的语句 }
语句1;
if( 条件判定 ){
语句2;
}else {
语句3;
}
语句4;
条件判定为true,执行顺序: 1=>2=>4
条件判定为false,执行顺序: 1=>3=>4
关于"if...else....的嵌套问题"有两种编写方法:
(1) if( ){
}else { if(){ }else { } }
(2) if( ){
}else if( ){ }else if( ){ }else { }
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; }
含义:若指定变量等于值1,则执行语句1;否则若等于值2,则执行语句2.... 否则执行语句n。
注意:默认情况下,switch若判定了某个相等条件则执行该条件以及后续所有条件中的执行语句 —— 必须配合break关键字使用。
5.程序逻辑结构 —— 循环结构之一
循环:多次执行相同或相似的代码
循环二要素: (1)循环体 (2)循环条件
第一种循环结构:
while( 循环条件判定 ){ //循环体 }
含义:执行条件判定,若为true,则执行一次循环体;再次执行条件判定.....直到某次执行完循环体,再去执行条件判定为false,则退出循环,继续执行后面的语句
语法:
do{ 循环主体; }while( 循环条件 );
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次
语法:
for( 表达式1 ; 表达式2 ; 表达式3 ){ 循环主体; }
含义:首先执行且仅执行一次“表达式1”;
再执行“表达式2”的判定,若为true,执行一次循环主体; 再执行一次“表达式3”,再去执行“表达式2”的判定, 若为true继续执行一次循环主体..... 直到为false,退出循环。
总结:
“表达式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;
}
echo "$i";
}
//1/2/3/4
while(true){ ...break;... } for( ; ; ){ ...break;... }
循环中使用continue关键字:跳过此次循环,继续下一次循环
for($i=1; $i<10; $i++){
if($i==5){
continue;
}
echo "$i";
}
//1/2/3/4/6/7/8/9
表示一个学生的成绩: $score = 90; #一个标量即可
表示100个学生的成绩:
$score1 = 85; $score2 = 98; $score3 = 77; ....
结论:一个标量类型的变量只能存储一个数据;若想一个变量中存储N个值,可以使用复合类型“数组(Array)”
创建一个数组的语法:
$变量名 = [ 值1, 值2, .... 值n ]; $变量名 = [ ];
获取数组中元素的个数/数组的长度:
echo count($变量名);
操作数组中的某个元素——使用元素的下标/索引(index):
$变量名[下标] = 值; #修改指定下标处的元素值 echo $变量名[下标]; #输出指定下标处的元素值
向数组中添加新元素:
$变量名[ ] = 值; #新的元素会自动获取新的下标
思考:创建一个数组,保存一个学子商城中用户的信息,编号、用户名、密码、注册时间、当前是否在线。
$user = [134773434, 'tom', '1232132', 123434434, 1];
0 1 2 3 4
数据的说明性太差了!
(1)索引数组(Indexed Array):每个元素的下标是数字
$arr = ['tom', 'mary', 'king']; $arr = [24, 35, 55, 28, 29]; 索引数组适用于“类型相同的多个数据”
(2)关联数组(Association Array):每个元素的下标是字符串
$user = ['uid' =>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 $下标变量名=>$元素变量名 ){ //循环主体 }
含义:对于数组中的每个元素,都看做是一个指定的变量,对每个这样的变量执行一次指定的循环体
示例: $ageList = [20, 23, 21, 25];
foreach( $ageList as $v){ echo "$v<br>"; } ================== $user = ['uid'=>101, 'uname'=>'tom']; foreach( $user as $v){ echo "$v<br>"; }
预定义:由PHP解释器自己创建的,程序员不需要声明可以直接使用的。PHP预定义了如下的数组变量:
$_GET
$_POST
$_COOKIE
$_FILES
$_REQUEST:保存着客户端提交给服务器的“请求”数据
$_SESSION
上述变量默认都是 array(0){ }
Web项目中,客户端(浏览器)如何给服务器传数据:
http://127.0.0.1/login.php?uname=tom&upwd=123
PHP服务器会自动把?后面的数据存储到$_REQUEST数组中:
$_REQUEST['uname'] = 'tom'; $_REQUEST['upwd'] = '123';
程序员如何读取客户端提交的数据:
echo $_REQUEST['uname']; //tom echo $_REQUEST['upwd']; //123
Function:功能体/函数,用于封装一段需要反复执行/不易编写的代码 —— 饺子机。
声明一个函数:
function 函数名( ){ //函数主体 }
执行/调用一个函数:
函数名( );
声明一个带参数的函数:
function 函数名(参数名1, 参数名2, ... ){ //函数主体 }
执行/调用一个函数:
函数名( 值1, 值2, ... );
声明函数时指定的参数其实就是变量名——形式参数;调用函数时给出指定的具体的值——实际参数。
声明一个带返回值的函数:
function 函数名( [参数名1, 参数名2, ...] ){ //函数主体 return 函数运算的结果值; //应该是整个函数中最后一句 }
执行/调用一个有返回值函数:
$变量名 = 函数名( [值1, 值2, ...] );
使用一个变量接收函数的返回值。
提示:历史上,PHP官方提供了两套访问MySQL服务器的函数:
mysql_xxxx( ) 性能不够优秀 mysqli_xxxx( ) Improved:改进提升版
使用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 );
$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
相关推荐: