PHP數(shù)組合并-創(chuàng)新互聯(lián)

很多時(shí)候我們要把多個(gè)數(shù)組進(jìn)行合并,在php函數(shù)庫中合并函數(shù)有:

創(chuàng)新互聯(lián)建站是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站模板,微信公眾號(hào)開發(fā),軟件開發(fā),小程序設(shè)計(jì),十年建站對(duì)水電改造等多個(gè)方面,擁有多年的網(wǎng)站推廣經(jīng)驗(yàn)。

直接合并:array_merge,array_merge_recursive;

間接合并:array_map,array_filter等可以使用匿名函數(shù)的方法

還有一種合并方式,那就是 + 這個(gè)實(shí)際就是一種運(yùn)算,但在很多時(shí)候它能完成直接合并不能完成的數(shù)組合并。

在這里不對(duì)間接合并作說明,因?yàn)殚g接數(shù)據(jù)已經(jīng)類似foreach循環(huán)處理。

PHP數(shù)組合并

array_merge_recursive 函數(shù)是針對(duì)多個(gè)數(shù)組合并但不能丟失每一個(gè)元素

PHP數(shù)組合并

array_merge 函數(shù)是針對(duì)多個(gè)數(shù)組合并只要后面有重復(fù)的就覆蓋前面的。

array_merge_recursive,array_merge這兩個(gè)函數(shù)在合并數(shù)字下標(biāo)或索引下標(biāo)時(shí)是不會(huì)覆蓋,而是重寫原標(biāo)下為默認(rèn)索引下標(biāo)按每個(gè)數(shù)組元素先后順序追加到合并新數(shù)組中去,所以當(dāng)待合并數(shù)組中需要覆蓋數(shù)字下標(biāo)的元素時(shí)這兩個(gè)函數(shù)就不能直接合并了,要么給把下標(biāo)修改成不純數(shù)字,要么使用循環(huán)語句,或者使用 +

+ 運(yùn)算在處理數(shù)組時(shí),必須保證兩邊的運(yùn)算值都是數(shù)組,注意:+前面的數(shù)組會(huì)覆蓋后面數(shù)組相同鍵名的值,這個(gè)與函數(shù)調(diào)用正好相反。

例如:

PHP數(shù)組合并

$arr與$arr1是兩個(gè)混合數(shù)組,結(jié)構(gòu)相同,只是數(shù)據(jù)有些差別,通過上面不同方式合并結(jié)果完全不相同,合并后主要看點(diǎn)是數(shù)組中下標(biāo)為test2與123的合并結(jié)果變化。

函數(shù) array_merge 合并存在覆蓋元素,但對(duì)于索引元素只會(huì)累加而不是覆蓋,那它合并后的結(jié)果是:

PHP數(shù)組合并

結(jié)論:使用array_merge函數(shù)對(duì)數(shù)組進(jìn)行合并,系統(tǒng)只會(huì)對(duì)數(shù)組的第一層下標(biāo)進(jìn)行判斷,數(shù)字下標(biāo)的元素會(huì)全部保留,并且在不影響元素索引位置重置下標(biāo),標(biāo)下的順序是從第一個(gè)數(shù)組開始然后累加后面的數(shù)組,字符串類下標(biāo)系統(tǒng)只保留最后出現(xiàn)下標(biāo)與元素,不會(huì)遞歸到元素的內(nèi)層數(shù)組中,直接覆蓋前面的元素。

函數(shù) array_merge_recursive 合并存在覆蓋元素,但對(duì)于索引元素只會(huì)累加而不是覆蓋,那它合并后的結(jié)果是:

PHP數(shù)組合并

結(jié)論:使用array_merge_recursive對(duì)數(shù)組進(jìn)行合并,系統(tǒng)只對(duì)第一層數(shù)字下標(biāo)的元素進(jìn)行重置為索引下標(biāo)并保留原來的位置,字符串類下標(biāo)元素是不會(huì)覆蓋,而是遞歸到內(nèi)層,遞歸中有數(shù)字下標(biāo)的停止當(dāng)前元素遞歸并重置下標(biāo),下標(biāo)是以當(dāng)前遞歸層內(nèi)第一個(gè)數(shù)字下標(biāo)為起點(diǎn)值進(jìn)行累加,并不全從0開始累加,遞歸層內(nèi)最內(nèi)層的字符串下標(biāo)出現(xiàn)相同時(shí),會(huì)在最小層內(nèi)創(chuàng)建一個(gè)數(shù)組并按重復(fù)的先后順序添加到這個(gè)數(shù)組中去,數(shù)組以默認(rèn)索引下標(biāo)進(jìn)行添加

使用$arr + $arr1 運(yùn)算方式是不會(huì)重置下標(biāo),所以相同下標(biāo)的元素都會(huì)以+左邊的數(shù)組為主去覆蓋+右邊的元素,那運(yùn)算后的結(jié)果是:

PHP數(shù)組合并

結(jié)論:使用+運(yùn)算合并數(shù)組,系統(tǒng)只對(duì)運(yùn)算數(shù)組的第一層元素進(jìn)行嚴(yán)格的下標(biāo)合并覆蓋,運(yùn)算前面的數(shù)組會(huì)覆蓋后面所有相同下標(biāo)的元素,并且不會(huì)遞歸到內(nèi)層,所有數(shù)字下標(biāo)與字符串下標(biāo)都將進(jìn)行覆蓋操作,并且不會(huì)修改下標(biāo)。

大部分開發(fā)中都會(huì)使用函數(shù)或循環(huán)合并數(shù)組,其它很多時(shí)候使用+會(huì)更方便,總結(jié)下這三種方式的合并場(chǎng)景:

array_merge :應(yīng)用在只對(duì)字符串下標(biāo)覆蓋(后面出現(xiàn)的覆蓋前面出現(xiàn)的元素),數(shù)字下標(biāo)的全部累加且不關(guān)注下標(biāo)是否修改或要求重置默認(rèn)數(shù)字下標(biāo),所有的合并只在第一層元素與對(duì)應(yīng)的下標(biāo)下完成,并不遞歸到內(nèi)層元素。

array_merge_recursive :應(yīng)用在不覆蓋任何元素,相同字符串下標(biāo)的元素會(huì)遞歸到內(nèi)層并在最小合并層時(shí)創(chuàng)建一個(gè)數(shù)組將重復(fù)的元素追加到這個(gè)數(shù)組中,數(shù)字下標(biāo)的停止當(dāng)前元素遞歸合并全部累加到當(dāng)前層(如果是第一層會(huì)重置數(shù)字下標(biāo)為默認(rèn)索引下標(biāo),第二層及更深層不會(huì)修改第一個(gè)元素的下標(biāo)值,只會(huì)重置第二個(gè)及以后的所有當(dāng)層數(shù)字下標(biāo)以第一個(gè)下標(biāo)為起始下標(biāo)值累加)且不關(guān)注下標(biāo)是否修改或要求重置默認(rèn)數(shù)字下標(biāo)。

+:應(yīng)用在嚴(yán)格按下標(biāo)(不區(qū)分下標(biāo)是否與數(shù)字或字符串)覆蓋,或者下標(biāo)不相同時(shí)累加且不重置下標(biāo)。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享文章:PHP數(shù)組合并-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://www.muchs.cn/article42/ejhec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)網(wǎng)站制作、靜態(tài)網(wǎng)站、企業(yè)建站、營銷型網(wǎng)站建設(shè)、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司