php學(xué)習(xí) 數(shù)組課件第1/2頁
Jun 13, 2016 pm 12:28 PM
下標(biāo):數(shù)組中的識別名稱?也就是字符串或整數(shù)在數(shù)組中的代號
數(shù)組中有幾個索引值就被稱為幾維數(shù)組。
索引值:索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。
????數(shù)組分類
在PHP數(shù)組被分為兩種:
索引數(shù)組:索引(indexed)索引值是整數(shù),以0開始,當(dāng)通過位置來標(biāo)識東西時用索引數(shù)組。
關(guān)聯(lián)數(shù)組:關(guān)聯(lián)(associative)關(guān)聯(lián)以字符串做索引值,索引值為列名,用語訪問列的數(shù)據(jù)。
????數(shù)組通常用賦值的方式
一般情況下數(shù)組賦值有兩種方式:
$a[1]="dsadsadsa";
$b[2]="dsadsadsad";
使用array函數(shù):
$a=array("dsads","dsadsa",321312);
一維數(shù)組:數(shù)組的索引值(下標(biāo))只有一個的時候稱之為一維數(shù)組。
數(shù)組直接賦值的格式:
$數(shù)組變量名[索引值]=資料內(nèi)容;
注意:索引值可以是字符串也可以是整數(shù)??但是1與“1”是不同的?它們一個屬于整數(shù)一個屬于字符串。
同名沒有給予索引值的數(shù)組是按照順序排列的。
實例:
??????$a=array(1,2,3,4,5,6);
????$b=array("one",?"two",?"three");
????$c=array(0=>"aaa",1=>"bbb",2=>"ccc");
????$d=array("aaa",6=>"bbb","ccc");
????$e=array("name"=>"zhang",?"age"=>20);
???>
????二維數(shù)組
多維數(shù)組的格式:
$a[0][]="dsadas";
$a[0][]="dsadsa";??這組是$a下的0索引值下的1和2
如果用array函數(shù)聲明格式如下:
$a=array("dsadsa","dsadas",21,array("dsadsa","dsadas"));
????數(shù)組的遍歷
foreach循環(huán)結(jié)構(gòu):
foreach?僅用與數(shù)組的循環(huán)?兩種格式
foreach(array_exprssion(數(shù)組表達(dá))?as?$value);
foreach(array_exprssion(數(shù)組表達(dá))?as?$key=>$value);
第一種格式遍歷給定了array_exprssion數(shù)組。每一次循環(huán)中當(dāng)前的值都被賦給我$calue,并且數(shù)組內(nèi)部的指針向前移動一步。
第二種格式做同樣的事,只除了當(dāng)前單元的鍵值也會在每次循環(huán)中被賦給變量?$key。?
當(dāng)?foreach?開始執(zhí)行時,數(shù)組內(nèi)部的指針會自動指向第一個單元。此外注意foreach?所操作的是指定數(shù)組的一個拷貝,而不是該數(shù)組本身
??$arr=array(10,20,30,40,50,60);
??foreach($arr?as?$k=>$v){
????echo?"$k=>$v
";
??}
輸出結(jié)果:0=>10?1=>20?2=>30?3=>40?4=>50?5=>60//下標(biāo)=>整數(shù)
????聯(lián)合使用list(),each()和while循環(huán)
each():
??$arr=array(1,2,3,4,5);
??$a=each($arr);??
??print_r($a);
輸出結(jié)果:Array?(?[1]?=>?1?[value]?=>?1?[0]?=>?0?[key]?=>?0?)?
拿取數(shù)組第一位的值value?下標(biāo)key
list():
??$arr3=array("a","b","c");????
??list($key,$value)=each($arr3);
??echo?$key."
".$value;
輸出結(jié)果:0?a?????list()可以說是用一步操作給一組變量賦值?僅能用于數(shù)字索引的數(shù)組并假定數(shù)字索引從?0?開始。
while循環(huán)
??$arr=array(1,2,3,4,5,6,7,8,9,);
??while(list($key,$value)=each($arr)){
??????$key++;
??????echo?$key."=>".$value;
??????echo?"
";
??}
??echo?"
";
輸出結(jié)果:1=>1?2=>2?3=>3?4=>4?5=>5?6=>6?7=>7?8=>8?9=>9
reset()數(shù)組指針重定向
在執(zhí)行?each()?之后,數(shù)組指針將停留在數(shù)組中的下一個單元或者當(dāng)碰到數(shù)組結(jié)尾時停留在最后一個單元。
is_array檢測變量是否為數(shù)組真返回ture假false
??$arr=array(1,2,3,4,5,6,"saas");
??while(list($k,$v)?=?each($arr))
??{
????if(is_array($arr))
????{
??????$x?+=?$v;
??????echo?$x;
????}
????else
????{
??????$x?+=?$k;
????}
??}
這個范例不能完全體現(xiàn)is_array的功能,但是可以參考。
????數(shù)組的指針
next():負(fù)責(zé)將指針向后移動
prve():負(fù)責(zé)將指針向前移動
end():會將指針指向數(shù)組最后一個元素
reset():將目前指針無條件移至第一個索引位置
語法格式:mixed?next(數(shù)組名稱)
??$arr=(array(1,2,3,4,5));
??echo?end($arr);
輸出結(jié)果:5
????key()與current()和count()
key()的函數(shù)是讀取目前指針?biāo)赶虻馁Y料的索引值。
current()的函數(shù)則是讀取目前指針?biāo)赶蛸Y料的內(nèi)容資料。
count()的函數(shù)是用來計算數(shù)組中所有元素的個數(shù),也就是說函數(shù)會傳回目標(biāo)數(shù)組的長度值。
格式:int?count(數(shù)組名稱);
key():從關(guān)聯(lián)數(shù)組中取得鍵名
$array?=?array('fruit1'?=>?'apple','fruit2'?=>?'orange','fruit3'?=>?'grape','fruit4'?=>?'apple','fruit5'?=>?'apple');
??while?($fruit_name?=?current($array))?{
??????if?($fruit_name?==?'apple')?{
????????echo?key($array).'
';
??????}
??????next($array);
??}
輸出結(jié)果:fruit1,fruit4,fruit5
current():返回數(shù)組中的當(dāng)前單元
??$transport?=?array('foot',?'bike',?'car',?'plane');
??$mode?=?current($transport);?//?$mode?=?'foot';
??$mode?=?next($transport);????//?$mode?=?'bike';
??$mode?=?current($transport);?//?$mode?=?'bike';
??$mode?=?prev($transport);????//?$mode?=?'foot';
??$mode?=?end($transport);?????//?$mode?=?'plane';
??$mode?=?current($transport);?//?$mode?=?'plane';
注意看范例?返回數(shù)組中的當(dāng)前單元
count():計算數(shù)組中單元的個數(shù)
??$arr=array(1,2,3,4,5,6);
??echo?count($arr);
輸出結(jié)果:6
????array_change_key_case()
array_change_key_case返回字符串鍵名全為小寫或者大寫的數(shù)組
其中包含的形態(tài)函數(shù)有兩個[CASE_UPPER]轉(zhuǎn)換為大寫,[CAS_LOWER]轉(zhuǎn)換為小寫。
??$input_array?=?array("FirSt"?=>?1,?"SecOnd"?=>?4);
??print_r(array_change_key_case($input_array,?CASE_UPPER));
輸出結(jié)果:Array?(?[FIRST]?=>?1?[SECOND]?=>?4?)?
????array_chunk()
array_chunk()次函數(shù)會將目標(biāo)數(shù)組的資料內(nèi)容,以指定索引個數(shù),分解成數(shù)個小型數(shù)組包含在原數(shù)組中。
??$arr=array(1,2,3,4,5,6);
??$a=array_chunk($arr,3);
??print_r($a);
輸出結(jié)果:Array?(?[0]?=>?Array?(?[0]?=>?1?[1]?=>?2?[2]?=>?3?)?[1]?=>?Array?(?[0]?=>?4?[1]?=>?5?[2]?=>?6?)?)
也就是等于用數(shù)組單元個數(shù)的總和除以3
????array_count_values
array_count_values??用來計算目標(biāo)數(shù)組中各值出現(xiàn)的次數(shù)
語法格式:array_count_values(目標(biāo)數(shù)組)
此函數(shù)所傳回結(jié)果值,會以原數(shù)組的內(nèi)容資料作為索引,以數(shù)組的形態(tài)表現(xiàn)。
??$arr=array(1,2,3,3,2,6);
??print_r(array_count_values($arr));
輸出結(jié)果:Array?(?[1]?=>?1?[2]?=>?2?[3]?=>?2?[6]?=>?1?)??
????

熱AI工具

Undress AI Tool
免費脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

用戶語音輸入通過前端JavaScript的MediaRecorderAPI捕獲并發(fā)送至PHP后端;2.PHP將音頻保存為臨時文件后調(diào)用STTAPI(如Google或百度語音識別)轉(zhuǎn)換為文本;3.PHP將文本發(fā)送至AI服務(wù)(如OpenAIGPT)獲取智能回復(fù);4.PHP再調(diào)用TTSAPI(如百度或Google語音合成)將回復(fù)轉(zhuǎn)為語音文件;5.PHP將語音文件流式返回前端播放,完成交互。整個流程由PHP主導(dǎo)數(shù)據(jù)流轉(zhuǎn)與錯誤處理,確保各環(huán)節(jié)無縫銜接。

在PHP中搭建社交分享功能的核心方法是通過動態(tài)生成符合各平臺要求的分享鏈接。1.首先獲取當(dāng)前頁面或指定的URL及文章信息;2.使用urlencode對參數(shù)進(jìn)行編碼;3.根據(jù)各平臺協(xié)議拼接生成分享鏈接;4.在前端展示鏈接供用戶點擊分享;5.動態(tài)生成頁面OG標(biāo)簽優(yōu)化分享內(nèi)容展示;6.務(wù)必對用戶輸入進(jìn)行轉(zhuǎn)義以防止XSS攻擊。該方法無需復(fù)雜認(rèn)證,維護(hù)成本低,適用于大多數(shù)內(nèi)容分享需求。

要實現(xiàn)PHP結(jié)合AI進(jìn)行文本糾錯與語法優(yōu)化,需按以下步驟操作:1.選擇適合的AI模型或API,如百度、騰訊API或開源NLP庫;2.通過PHP的curl或Guzzle調(diào)用API并處理返回結(jié)果;3.在應(yīng)用中展示糾錯信息并允許用戶選擇是否采納;4.使用php-l和PHP_CodeSniffer進(jìn)行語法檢測與代碼優(yōu)化;5.持續(xù)收集反饋并更新模型或規(guī)則以提升效果。選擇AIAPI時應(yīng)重點評估準(zhǔn)確率、響應(yīng)速度、價格及對PHP的支持。代碼優(yōu)化應(yīng)遵循PSR規(guī)范、合理使用緩存、避免循環(huán)查詢、定期審查代碼,并借助X

PHPisstillrelevantinmodernenterpriseenvironments.1.ModernPHP(7.xand8.x)offersperformancegains,stricttyping,JITcompilation,andmodernsyntax,makingitsuitableforlarge-scaleapplications.2.PHPintegrateseffectivelyinhybridarchitectures,servingasanAPIgateway

避免N 1查詢問題,通過提前加載關(guān)聯(lián)數(shù)據(jù)來減少數(shù)據(jù)庫查詢次數(shù);2.僅選擇所需字段,避免加載完整實體以節(jié)省內(nèi)存和帶寬;3.合理使用緩存策略,如Doctrine的二級緩存或Redis緩存高頻查詢結(jié)果;4.優(yōu)化實體生命周期,定期調(diào)用clear()釋放內(nèi)存以防止內(nèi)存溢出;5.確保數(shù)據(jù)庫索引存在并分析生成的SQL語句以避免低效查詢;6.在無需跟蹤變更的場景下禁用自動變更跟蹤,改用數(shù)組或輕量模式提升性能。正確使用ORM需結(jié)合SQL監(jiān)控、緩存、批量處理和適當(dāng)優(yōu)化,在保持開發(fā)效率的同時確保應(yīng)用性能。

要構(gòu)建彈性的PHP微服務(wù),需使用RabbitMQ實現(xiàn)異步通信,1.通過消息隊列解耦服務(wù),避免級聯(lián)故障;2.配置持久化隊列、持久化消息、發(fā)布確認(rèn)和手動ACK以確??煽啃?;3.使用指數(shù)退避重試、TTL和死信隊列安全處理失?。?.通過supervisord等工具守護(hù)消費者進(jìn)程并啟用心跳機制保障服務(wù)健康;最終實現(xiàn)系統(tǒng)在故障中持續(xù)運作的能力。

使用subprocess.run()可安全執(zhí)行shell命令并捕獲輸出,推薦以列表傳參避免注入風(fēng)險;2.需要shell特性時可設(shè)shell=True,但需警惕命令注入;3.使用subprocess.Popen可實現(xiàn)實時輸出處理;4.設(shè)置check=True可在命令失敗時拋出異常;5.簡單場景可直接鏈?zhǔn)秸{(diào)用獲取輸出;日常應(yīng)優(yōu)先使用subprocess.run(),避免使用os.system()或已棄用模塊,以上方法覆蓋了Python中執(zhí)行shell命令的核心用法。

使用正確的PHP基礎(chǔ)鏡像并配置安全、性能優(yōu)化的Docker環(huán)境是實現(xiàn)生產(chǎn)就緒的關(guān)鍵。1.選用php:8.3-fpm-alpine作為基礎(chǔ)鏡像以減少攻擊面并提升性能;2.通過自定義php.ini禁用危險函數(shù)、關(guān)閉錯誤顯示并啟用Opcache及JIT以增強安全與性能;3.使用Nginx作為反向代理,限制訪問敏感文件并正確轉(zhuǎn)發(fā)PHP請求至PHP-FPM;4.采用多階段構(gòu)建優(yōu)化鏡像,移除開發(fā)依賴,設(shè)置非root用戶運行容器;5.可選Supervisord管理多個進(jìn)程如cron;6.部署前驗證無敏感信息泄
