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

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

必要資源:

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

phpStudy 2018 :?phpStudy - Windows 一鍵部署 PHP 開發環境 · 小皮出品

目錄

一、條件指令

? ? ? ? 1.1?if()

????????????????*假條件

? ? ? ? 1.2 elseif()

? ? ? ? 1.3 else

二、循環結構

? ? ? ? 2.1 while()

? ? ? ? 2.2 do…while()

????????2.3 for

? ? ? ? 2.4 switch

三、定義函數(function)

四、標準函數

? ? ? ? 4.1 isset()

? ? ? ? 4.2 empty()

? ? ? ? 4.3 md5();

? ? ? ? 4.4 include() & include_once()

? ? ? ????????? i.) include()

? ? ? ? ? ? ? ? ii.) include_once()

? ? ? ? 4.5 require() & require_once()

五、數組

? ? ? ? 5.1?索引數組

? ? ? ? 5.2 關聯數組

? ? ? ? 5.3 二 / 多維數組

六、數組循環

? ? ? ? 6.1 foreach()

七、小結


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

一、條件指令

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

? ? ? ? 1.1?if()

=> 如果…是對的,就…

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

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

? ? ? ??

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

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

if(4)      => 條件為真
if("abc")  => 條件為真

? ? ? ? 1.2 elseif()

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

if(條件1){<指令a>;    //若條件1被滿足,執行指令a
}elseif(條件2){<指令b>;    //若條件2被滿足,執行指令b
}
$num=10;if($num==9){echo "hello world";
}elseif($num==10){echo "good morning";
}
::輸出:good morning

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

? ? ? ? 1.3 else

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

if(條件1){<指令a>;
}elseif(條件2){<指令b>;
}else{            ::若條件 1 & 2 都沒被滿足(都為假),就會執行<指令c><指令c>;
}
$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=當,即當條件被滿足時,就執行指令,一直重複直到條件為假為止。

while(條件){<指令>;
}
while(4>3){echo "hi ";
}
::會一直輸出hi hi hi hi hi hi hi hi hi hi…

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

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

? ? ? ? 2.2 do…while()

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

do{<指令1>;    ::先執行<指令1>
}while(條件);   ::再判斷條件,若條件為假會跳出循環 ::條件為真則繼續執行do中的<指令1>
$num=4;do{echo $num;
}while($num==1);    //即使條件不成立,也會先輸出一次
::輸出:4do{echo $num;$num++;
}while($num<=10);    //一直執行直到條件為假
::輸出:45678910

????????2.3 for

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

for(初始值;判斷條件;每次循環結束的動作){<指令>;
}
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。

switch ($變量) {        case 值1:// 當變量的值等於值1時執行的代碼break;case 值2:// 當變量的值等於值2時執行的代碼break;// ... 更多 case ...default:// 沒有匹配項時執行的代碼
}

  • break:終止 switch 執行(防止同時執行2個case)

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

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

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

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

=> 共用代碼

$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)

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

function <函數名>(型參數){<代碼塊>;
}<函數名>(實參數);    //調用函數::型參數=變量
::實參數=用戶輸入的實際數據
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 我是xiaofonghelloecho hi("xiaofong",18);            //會執行return命令
::輸出:good morning 我是xiaofong    剛滿18歲                     //echo 'hello'命令不會執行
//可直接在定義函數時賦值
function hi($name="訪客",$age)…hi($name,18);         //可不輸入該數據也能調用函數hi("xiaofong",18);    //若調用函數時再次輸入了數據,數據會被覆蓋//$name不再="訪客",而="xiaofong"

=> 可直接賦值

四、標準函數

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

? ? ? ? 4.1 isset()

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

isset(變量名);
//變量是否被賦值(true/false)$name="xiaofong"
echo isset($name);
::輸出:1    //true=1  false=0(不顯示)echo isset($num);    //$num未被賦值
::輸出:              //輸出0時不會顯示

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

? ? ? ? 4.2 empty()

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

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()

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

include(文件名);
//與調用函數有點類似
? ? ? ? ? ? ? ? ii.) include_once()

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

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?索引數組

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

//array[…]=數組$arr1=array(1,2,3,4,5);
print_r($arr1);                 //print_r專門用於輸出數組
::輸出:[0] => 1            //默認從0開始排起[1] => 2[2] => 3[3] => 4[4] => 5echo $arr1[4];    //拿第5個值(下標從0開始算起)
::輸出:5          //因為是輸出數字,所以要用echo

//可以修改下標$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 關聯數組

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

$arr2=array("name"=>"xiaolin","age"=>18,"sex"=>"male");
::下標是字符串print_r($arr2);
::輸出:["name"] => "xiaofong"["age"]  =>  18["sex"]  => "male"echo $arr2["name"];
::輸出:xiaofong

? ? ? ? 5.3 二 / 多維數組

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

$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()專門用於輸出數組)

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

六、數組循環

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

? ? ? ? 6.1 foreach()

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

foreach(數組名 as $標=>$值){ <代碼塊>;
}
$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["…"] )

$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的技術以及分析一些漏洞哈,大家敬請期待。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92248.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92248.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92248.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

狀壓DP-基本框架

狀壓DP-基本框架一、狀壓DP的核心思想與適用場景1.1 問題特征1.2 核心思想1.3 與傳統DP的對比二、位運算基礎&#xff1a;狀壓DP的語法三、狀壓DP的基本框架3.1 步驟拆解3.2 通用代碼模板四、經典案例詳解4.1 旅行商問題&#xff08;TSP&#xff09;問題描述狀壓DP設計代碼實現…

Web 端 AI 圖像生成技術的應用與創新:虛擬背景與創意圖像合成

隨著 Stable Diffusion、Midjourney 等生成式 AI 模型的爆發,Web 端圖像生成技術從“實驗室demo”走向“工業化應用”。其中,虛擬背景替換(如視頻會議的動態背景生成)和創意圖像合成(如用戶上傳素材與 AI 生成元素的融合)成為最具代表性的場景,它們通過“文本描述→AI 生…

應急響應知識總結

應急響應 Windows系統 查賬號 1、查看服務器是否有弱口令&#xff0c;遠程管理端口是否對公網開放。 檢查方法&#xff1a;據實際情況咨詢相關服務器管理員。 2、查看服務器是否存在可疑賬號、新增賬號。 檢查方法&#xff1a;打開 cmd 窗口&#xff0c;輸入 lusrmgr.msc …

智慧水務賦能二次供水管理精細化轉型:物聯網驅動的全鏈路解決方案

隨著我國城鎮化率激增&#xff0c;高層建筑占比上升&#xff0c;二次供水系統已成為保障城市供水安全的核心環節。然而&#xff0c;傳統管理模式面臨設備老化、運維粗放、監管缺失等矛盾&#xff0c;在此背景下&#xff0c;《“十四五”節水型社會建設規劃》明確要求推進二次供…

tsmc 5nm lvs之 short難搞的類型

1、M3層以上的層次發生的short&#xff0c;dengsity很高的情況下&#xff0c;兩根信號net導致的short&#xff0c;刪除其中一根然后ecoRoute fix不掉的情況下&#xff0c;該怎么辦&#xff0c;可以嘗試去cut 周圍或者上方的power。 2、M1&#xff0c; M2由于cell 內部出pin&…

初識神經網絡01——認識PyTorch

文章目錄一、認識PyTorch1.1 PyTorch是什么1.2 安裝PyTorch二、認識Tensor2.1 創建Tensor2.1.1 基本方式2.2.2 創建線性和隨機張量2.2 Tensor屬性2.2.1 切換設備2.2.2 類型轉換2.3 Tensor與Numpy的數據轉換2.3.1 張量轉ndarray2.3.2 Numpy轉張量2.4 Tensor常見操作2.4.1 取值2.…

Android UI 組件系列(十一):RecyclerView 多類型布局與數據刷新實戰

博客專欄&#xff1a;Android初級入門UI組件與布局 源碼&#xff1a;通過網盤分享的文件&#xff1a;Android入門布局及UI相關案例 鏈接: https://pan.baidu.com/s/1EOuDUKJndMISolieFSvXXg?pwd4k9n 提取碼: 4k9n 引言 在 Android 應用中&#xff0c;RecyclerView 是最常用…

如何學習跨模態對齊(尤其是 CLIP 思想)

學習跨模態對齊&#xff08;尤其是CLIP思想&#xff09;需要結合理論基礎、經典模型原理、實踐復現和前沿擴展&#xff0c;以下是一套系統的學習路徑&#xff0c;從入門到深入逐步展開&#xff1a; 一、先補基礎&#xff1a;跨模態對齊的“前置知識” 跨模態對齊的核心是讓圖…

日記研究:一種深入了解用戶真實體驗的UX研究方法

在用戶體驗&#xff08;UX&#xff09;研究中&#xff0c;我們常常需要了解用戶在真實世界中如何與產品互動。然而&#xff0c;由于時間和空間的限制&#xff0c;我們很難像“特工”一樣全天候跟蹤用戶。這時&#xff0c;“日記研究”&#xff08;Diary Studies&#xff09;就成…

鴻蒙app 開發中 加載圖片的時候閃一下 如何解決

1.解決 在圖片上 加載這個屬性 .syncLoad(true) 參考的官方鏈接

【OS】進程與線程

進程進程實體代碼段相關數據PCB進程標識符外部標識符&#xff1a;為方便用戶對進程的訪問&#xff0c;為每個進程設置一個外部標識符&#xff0c;通常由字母和數字組成內部標識符&#xff1a;為方便系統對進程的使用&#xff0c;在OS中又為進程設置了內部標識符&#xff0c;賦予…

Django 序列化詳解:從 Model 到 JSON,全面掌握數據轉換機制

一、引言&#xff1a;什么是 Django 序列化&#xff1f;在 Web 開發中&#xff0c;序列化&#xff08;Serialization&#xff09; 是指將復雜的數據結構&#xff08;如數據庫模型對象&#xff09;轉換為可傳輸的格式&#xff08;如 JSON、XML、YAML 等&#xff09;&#xff0c;…

茶葉蛋大冒險小游戲流量主微信抖音小程序開源

游戲特點 響應式設計&#xff1a;完美適配各種移動設備屏幕尺寸 直觀的觸摸控制&#xff1a;左右滑動屏幕控制茶葉蛋移動 中式風格元素&#xff1a; 茶葉蛋角色帶有裂紋紋理和可愛表情 筷子、蒸籠等中式廚房元素作為障礙物 八角、茶葉等香料作為收集物 鍋底火焰動畫效果 游戲機…

區分郵科工業交換機與路由器

在這個數字化的時代&#xff0c;我們每天都在享受著互聯網帶來的便利。無論是工作還是娛樂&#xff0c;網絡已經成為我們生活中不可或缺的一部分。然而&#xff0c;在這個看似簡單的背后&#xff0c;隱藏著兩個至關重要的設備——郵科工業交換機和路由器。它們就像網絡世界的雙…

【數據結構入門】數組和鏈表的OJ題(2)

目錄 1.回文鏈表 分析&#xff1a; 代碼&#xff1a; 2.相交鏈表 分析&#xff1a; 代碼&#xff1a; 3.環形鏈表 分析&#xff1a; 代碼&#xff1a; 面試提問&#xff1a; 4.環形鏈表II 分析1&#xff1a; 分析2&#xff1a; 代碼&#xff1a; 5.隨機鏈表的復…

文件包含篇

web78 第一題filter偽協議直接讀源碼即可 ?filephp://filter/convert.base64-encode/resourceflag.php web79 flag.php的php無法用大小寫繞過&#xff0c;所以用Php://input只讀流 import requests url "http://fadb524a-f22d-4747-a35c-82f71e84bba7.challenge.ctf.sho…

互作蛋白組學技術對比:鄰近標記與傳統IP-MS、Pull down-MS優勢對比

在生命科學領域&#xff0c;蛋白質間的相互作用構成了生命活動的核心網絡&#xff0c;驅動著信號傳導、基因調控、代謝途徑等關鍵過程。為了繪制這幅復雜的“分子互作地圖”&#xff0c;科學家們開發了多種技術&#xff0c;其中免疫共沉淀結合質譜&#xff08;IP-MS&#xff09…

(ZipList入門筆記一)ZipList的節點介紹

ZipList是 Redis 中一種非常緊湊、節省內存的數據結構 Ziplist&#xff08;壓縮列表&#xff09; 的內部內存布局。它被用于存儲元素較少的 List、Hash 和 Zset。 下面我們來詳細介紹每一個節點的含義&#xff1a; 1. zlbytes (ziplist bytes) 含義&#xff1a; 整個壓縮列…

Unix 發展史概覽

這里是一個簡明清晰的 Unix 發展史概覽&#xff0c;涵蓋從起源到現代的重要節點和演變過程。Unix 發展史概覽 1. Unix 起源&#xff08;1969年&#xff09; 貝爾實驗室&#xff1a;Ken Thompson 和 Dennis Ritchie 開發出 Unix 操作系統。最初設計目標&#xff1a;簡潔、可移植…

基于coze studio開源框架二次定制開發教程

目錄 一、 項目介紹 1.1 什么是Coze Studio 1.2 功能清單 1.3對比商業版本 二、 功能定開說明 2.1 技術棧簡介 2.2 項目架構