後端開發技術教學(二) 條件指令、循環結構、定義函數

書接上回:後端開發技術教學(一) [附2025最新可用 phpstudy2018下載鏈接] -CSDN博客

必要資源:

trae中文版下載網址: TRAE - The Real AI Engineer

phpStudy 2018 : phpStudy - Windows 一键部署 PHP 开发环境 · 小皮出品

目录

一、條件指令

[1.1 if()](#1.1 if())

假條件

[1.2 elseif()](#1.2 elseif())

[1.3 else](#1.3 else)

二、循環結構

[2.1 while()](#2.1 while())

[2.2 do...while()](#2.2 do…while())

[2.3 for](#2.3 for)

[2.4 switch](#2.4 switch)

三、定義函數(function))

四、標準函數

[4.1 isset()](#4.1 isset())

[4.2 empty()](#4.2 empty())

[4.3 md5();](#4.3 md5();)

[4.4 include() & include_once()](#4.4 include() & include_once())

i.) include() include())

ii.) include_once() include_once())

[4.5 require() & require_once()](#4.5 require() & require_once())

五、數組

[5.1 索引數組](#5.1 索引數組)

[5.2 關聯數組](#5.2 關聯數組)

[5.3 二 / 多維數組](#5.3 二 / 多維數組)

六、數組循環

[6.1 foreach()](#6.1 foreach())

七、小結


上回我們說了PHP的基本語法哈,那麼我們這期就來探討一下PHP的條件指令、循環結構和定義函數。

一、條件指令

條件指令會判斷某指定條件是否被滿足,只有判斷結果為'true'才會執行命令。

1.1 if()

=> 如果...是對的,就...

php 复制代码
if(條件){
    <代碼>;
}
php 复制代码
if(4>3){
    echo "hello world";    //若4大於3是對的,就輸出"hello world"
}
::輸出:hello world

*若條件未滿足,則會無視該代碼。

假條件
php 复制代码
::如果if(條件)裡	,條件為:
1.) 為0的數字  
2.) 0.0  
3.) 不存在數組/對象  
4.) 只有"" / ''
5.) 條件錯誤(e.g 3大於4)
=>條件為假
​	
*string有任何字符都為真    //string="..."
    e.g if("0")=>為真
        if(" ")=>為真    //空格也算字符
        if("") =>為假
        if(0)  =>為假

=> 即只要不違反上面那5個原則,條件都是對的。

php 复制代码
if(4)      => 條件為真
if("abc")  => 條件為真

1.2 elseif()

=> 跟if一樣效果,因為不能同時用2個if,所以就要用elseif。

php 复制代码
if(條件1){
    <指令a>;    //若條件1被滿足,執行指令a
}elseif(條件2){
    <指令b>;    //若條件2被滿足,執行指令b
}
php 复制代码
$num=10;

if($num==9){
    echo "hello world";
}elseif($num==10){
    echo "good morning";
}
::輸出:good morning

=> 若兩個條件同時滿足,則只執行第一個滿足條件的代碼塊。

1.3 else

=> 若所有條件都沒被滿足,就運行else下的指令。通常跟if和elseif一起用。

php 复制代码
if(條件1){
    <指令a>;
}elseif(條件2){
    <指令b>;
}else{            ::若條件 1 & 2 都沒被滿足(都為假),就會執行<指令c>
    <指令c>;
}
php 复制代码
$num="xiaofong";

if($num==9){
    echo "hello world";
}elseif($num==10){
    echo "good morning";
}else{
    echo "I love u";
}
::輸出:I love u

二、循環結構

循環結構跟條件指令差不多哈,都是會判斷條件是否正確後再執行指令。可不同的在於條件指令只會判斷一次條件,而循環結構會一直判斷條件、一直執行指令,直到條件為假為止。

2.1 while()

=> while=當,即當條件被滿足時,就執行指令,一直重複直到條件為假為止。

php 复制代码
while(條件){
    <指令>;
}
php 复制代码
while(4>3){
    echo "hi ";
}
::會一直輸出hi hi hi hi hi hi hi hi hi hi...

=> 這有甚麼用呢?比如你要輸出1-10,正常做法是一個一個的echo 1 echo 2...,很麻煩。但用while就會方便很多

php 复制代码
//輸出1-10

echo 1;echo 2;echo3;echo ...
::爛方法

$num=1;
while($num<=10){    //當$num小於等於10時,條件為真
    echo $num;
    $num++;         //每輸出完一次數字之後,都會把數值加一(遞增)
}
::輸出:12345678910

2.2 do...while()

=> 先執行一次命令,再判斷條件,條件為真才繼續執行後面的命令。

php 复制代码
do{
    <指令1>;    ::先執行<指令1>
}while(條件);   ::再判斷條件,若條件為假會跳出循環 
                ::條件為真則繼續執行do中的<指令1>
php 复制代码
$num=4;

do{
    echo $num;
}while($num==1);    //即使條件不成立,也會先輸出一次
::輸出:4

do{
    echo $num;
    $num++;
}while($num<=10);    //一直執行直到條件為假
::輸出:45678910

2.3 for

=> for跟while是差不多的,可以說for是while的縮寫版。

php 复制代码
for(初始值;判斷條件;每次循環結束的動作){
    <指令>;
}
php 复制代码
for($a=0;$a<=5;$a++)
::初始值$a是0
::當$a小於等於5時,重複循環
::每次循環結束後,$a的值加一(遞增)

for($a=0;$a<=5;$a++){
    echo $a;
}
::輸出:012345

2.4 switch

=> switch用於根據某變量的值執行不同的代碼塊 。比多個 if & elseif 語句更簡潔清晰。特别適合處理多個固定選項的場景。複雜場景一律用 if-elseif。

php 复制代码
switch ($變量) {        
    case 值1:
        // 當變量的值等於值1時執行的代碼
        break;
    case 值2:
        // 當變量的值等於值2時執行的代碼
        break;
    // ... 更多 case ...
    default:
        // 没有匹配項時執行的代碼
}
  • break:終止 switch 執行(防止同時執行2個case)

  • default:所有 case 都不匹配時執行的代碼

php 复制代码
$day = "Wed";

switch ($day) {
    case "Mon":
        echo "星期一";
        break;
    case "Tue":
        echo "星期二";
        break;
    case "Wed":
        echo "星期三";
        break;
    case "Thu":
        echo "星期四";
        break;
    default:
        echo "周末";
}

::輸出:星期三

=> 用switch來處理單變量多固定值匹配

php 复制代码
$userLevel = 2;

switch ($userLevel) {
    case 1:
    case 2:  // 1 和 2 執行相同代碼
        echo "普通用户";
        break;
    case 3:
        echo "VIP用户";
        break;
    default:
        echo "未知用户";
}

::輸出:普通用户

=> 共用代碼

php 复制代码
$score = 85;

switch (true) {
    case ($score >= 90):
        echo "A";
        break;
    case ($score >= 80): // 會執行這個代碼塊
        echo "B"; // 輸出 B
        // 注意:這裡没有 break!
    case ($score >= 70):
        echo "C"; // 也會輸出 C(因為穿透)
        break;
    default:
        echo "D";
}
::输出:BC

=> 只有switch能穿透執行,同時執行多個case的代碼塊。

三、定義函數(function)

=> 有點像數學中的代數。

php 复制代码
function <函數名>(型參數){
    <代碼塊>;
}

<函數名>(實參數);    //調用函數


::型參數=變量
::實參數=用戶輸入的實際數據
php 复制代码
function hi($name,$age){    //類似數據模版
​	echo "good morning ";
​	echo "我是$name\n";
​	return "剛滿$age歲";	    //只有用echo執行時才會觸發return,且return往後的代碼不會執行
​	echo 'hello';               
}

hi("xiaofong",18);                 //$name="xiaofong"  $age=18
<!-- 調用函數 -->                   //return不會執行=> echo 'hello'命令可被執行
::輸出:good morning 我是xiaofong
       hello


echo hi("xiaofong",18);            //會執行return命令
::輸出:good morning 我是xiaofong    
       剛滿18歲                     //echo 'hello'命令不會執行
php 复制代码
//可直接在定義函數時賦值
function hi($name="訪客",$age)...

hi($name,18);         //可不輸入該數據也能調用函數

hi("xiaofong",18);    //若調用函數時再次輸入了數據,數據會被覆蓋
                      //$name不再="訪客",而="xiaofong"

=> 可直接賦值

四、標準函數

是指被PHP賦值的固定函數,擁有固定的功能,且不可作為被定義對象。

4.1 isset()

=> 用於檢查變量是否已聲明,常用於避免因訪問未定義變量而引發的錯誤。

php 复制代码
isset(變量名);
//變量是否被賦值(true/false)

$name="xiaofong"
echo isset($name);
::輸出:1    //true=1  false=0(不顯示)

echo isset($num);    //$num未被賦值
::輸出:              //輸出0時不會顯示

=> 變量存在時為true(正確)

4.2 empty()

=> 跟isset()作用差不多,用於測試變量是否為空。

php 复制代码
empty();
//變量是否為空(true/false)

$name="xiaofong";
echo empty($name);    //$name不為空,所以empty()會輸出false
::輸出:               //false=0,不會輸出

=> 變量不存在時才為true(正確),與isset()相反。

4.3 md5();

=> 把輸出結果加密成++32位加密字符串++。不可逆,但可以用彩虹表破解,因為同一輸出字串會生成一樣的密文。

=> 不會輸出"xiaofong",直接輸出密文。

4.4 include() & include_once()

=> 可以將另一文件上的代碼或字串引用到本文件上,常用於引用代碼版塊。

i.) include()

=> 允許重複加載相同文件。且報錯時不會終止運行腳本。

php 复制代码
include(文件名);
//與調用函數有點類似
ii.) include_once()

=> 允許重複加載相同文件,會無視重複的加載命令。報錯時也不會終止運行腳本。

php 复制代码
include_once(文件名1);
include_once(文件名1);    ::此命令會被無視

=> 加載文件不存在所以報錯,但不會影響後面命令的執行。

4.5 require() & require_once()

=> 與include & include_once的作用及用法幾乎一樣,分別在於require()報錯時會立即停止腳本的運作,即後面的命令不會再執行。

方法 錯誤處理 重複包含檢查 適用場景
include 警告,繼續執行 ❌ 不檢查 可重複加載的非關鍵文件
include_once 警告,繼續執行 ✅ 檢查 避免重複定義的非關鍵文件
require 錯誤,終止執行 ❌ 不檢查 必須存在的可重複文件
require_once 錯誤**,終止執行** ✅ 檢查 核心且唯一的關鍵文件
  • 先使用 require_once 加載核心文件(如類庫、配置),確保依賴安全。

  • 對模板片段等非關鍵内容用 include,需要避免重複時用 include_once

五、數組

類似列表,指多組數據結合在一起。由標與值組成。分為關聯數組及索引數組。

下標 (標記數據) 值 (數據。可以是數字,也可以是字串)
[0] 或 $name xiaofong
[1] 或 $age 18
[2] 或 $sex male

*下標的類型必須相同,即全部為數字,或全部是字符串。

5.1 索引數組

=> 即下標為數字的數組,給數據排號碼,方便拿數據。

php 复制代码
//array[...]=數組

$arr1=array(1,2,3,4,5);
print_r($arr1);                 //print_r專門用於輸出數組
::輸出:
    [0] => 1            //默認從0開始排起
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5


echo $arr1[4];    //拿第5個值(下標從0開始算起)
::輸出:5          //因為是輸出數字,所以要用echo
php 复制代码
//可以修改下標

$arr1=array(1,2=>"hi",3,4,5);    //值可以是數字或字符串

print_r($arr1);
::輸出:
    [0] => 1
    [2] => "hi"    //標被從[1]改成了[2],往後的標也會改變
    [3] => 3       //若是用默認的[2],就會有2個[2],所以要往後稍一稍,變成[3]
    [4] => 4       //同理可證
    [5] => 5      

5.2 關聯數組

=> 下標為字符串或變量,類似為數據命名,方便找到數據。

php 复制代码
$arr2=array("name"=>"xiaolin","age"=>18,"sex"=>"male");
::下標是字符串

print_r($arr2);
::輸出:
    ["name"] => "xiaofong"
    ["age"]  =>  18
    ["sex"]  => "male"

echo $arr2["name"];
::輸出:xiaofong

5.3 二 / 多維數組

=> 顧名思義,就是數組裡面有數組。

php 复制代码
$arr1=array(
​	array(1,2,3),    //是用逗號隔開,不是用分號喔
​	array(4,5,6),
​	array(7,8,9),
)

或

$arr2=array[
​	[1,2,3],                //一樣的效果,會比較方便
​	["a"=>4,"b"=>5,"222"=>6],
​	[7,8,9],
]

**因為值的類型是數組,所以不能用echo輸出,要用print_r()。(print_r()專門用於輸出數組)

php 复制代码
//承上
print_r($arr2[1]["222"]);        
//輸出第2個數組中,名為"222"的數據
::輸出:6

六、數組循環

如果用print_r()輸出數組,數據會以列表的方式輸出。而數組循環會將數據以句子的方式全部輸出。

6.1 foreach()

=> 把每行的標和組,以行列的方式輸出。

php 复制代码
foreach(數組名 as $標=>$值){ 
    <代碼塊>;
}
php 复制代码
$arr=array("name:"=>"xf"," age:"=>18," sex:"=>"M");

foreach($arr as $k=>$v){ 	//以$k代表下標,$v代表值(變量可以隨便寫,記得是 標=>值 就可以了)
​	echo $k;	//輸出標
​	echo $v;	//輸出值
}
::輸出:name:xf age:18 sex:M    //輸出完最後一組數據就會停止輸出,不會一直下去


print_r($arr);
::輸出:
    ["name"] => "xf"        //列表方式輸出
    ["age"]  =>  18
    ["sex"]  => "M"

*若數據類型是數組,則要加下標( echo $v["..."] )

php 复制代码
$arr1=array(
​	array(1,2,3),    
​	array(4,5,6),
​	array(7,8,9),
);

foreach($arr1 $k=>$v){
    echo $k;
    echo $v[0];    //只輸出每個數組的第1個數據
}
::輸出:011427

七、小結

到這裡PHP語句也說的差不多了,大家只需要記住它們的功能和運作邏輯就可以了,實操可以讓AI幫忙寫代碼,至於怎麼操作在上一篇結尾說過了,我就不多說了。

下一篇小編會繼續跟大家探討PHP哈,而後我們會開始研究數據庫mysql的技術以及分析一些漏洞哈,大家敬請期待。

相关推荐
Ronin3056 分钟前
【Linux系统】进程间通信:命名管道
linux·服务器·命名管道
汪子熙18 分钟前
如何使用 Node.js 代码下载 Github issue 到本地
javascript·后端
东东今天敲代码了吗19 分钟前
Ubuntu20.04 离线安装 FFmpeg 静态编译包
linux·运维·服务器·ubuntu·ffmpeg
冒泡的肥皂20 分钟前
2PL-事务并发(二
数据库·后端·mysql
xiaok26 分钟前
nginx反向代理中server块中的配置信息详解
后端
LH_R32 分钟前
OneTerm 开源堡垒机 | 历时三个月重构大更新
运维·后端·安全
久下不停雨33 分钟前
单例模式代码实现
后端
用户849137175471633 分钟前
JDK 17 实战系列(第2期):核心语言特性深度解析
java·后端
自由的疯36 分钟前
Java 8 新特性之 Lambda 表达式
java·后端·架构
meiguiyulu37 分钟前
深入理解线程生命周期:从创建到终止的全状态解析
后端