PHP合并數(shù)組的2種方法小結(jié)
前言
在此前合并數(shù)組我一直用的是array_merge()這個(gè)函數(shù),但最近我在換工作的時(shí)候遇到一道合并數(shù)組的面試題,我當(dāng)時(shí)想的是將兩個(gè)數(shù)組先轉(zhuǎn)化為字符串,合并后再轉(zhuǎn)化為數(shù)組輸出,面試官說這個(gè)思路不太對(duì),完了bulabula講了一下數(shù)組基礎(chǔ)的東西,然后確實(shí)是因?yàn)榻?jīng)驗(yàn)問題,或者是代碼寫太少,想不到還有什么方法,今天我百度了一下,原來還有‘+'號(hào),
array_merge_recursive() ,也是可以用來合并數(shù)組的,根據(jù)我的記憶,我把那道題寫出來看一下:
$a = array('color'=>'red',5,6);
$b = array('color'=>'blue','type'=>'fruit',6,7);
$arr = array_merge($a,$b);
var_dump($arr);
array (size=6) 'color' => string 'blue' (length=4) 0 => int 5 1 => int 6 'type' => string 'fruit' (length=5) 2 => int 6 3 => int 7
要求是在不使用array_merge()的情況的得到相同的效果;
(array_merge()合并數(shù)組會(huì)把前一個(gè)數(shù)組中關(guān)聯(lián)形式數(shù)組的鍵值相同的覆蓋,索引形式的則按鍵值順序合并在一起)
1.先用array_merge_recursive()函數(shù)來合并一下:
$a = array('color'=>'red',5,6);
$b = array('color'=>'blue','type'=>'fruit',6,7);
$arr = array_merge_recursive($a,$b);
var_dump($arr);
輸出結(jié)果:
array (size=6) 'color' => array (size=2) 0 => string 'red' (length=3) 1 => string 'blue' (length=4) 0 => int 5 1 => int 6 'type' => string 'fruit' (length=5) 2 => int 6 3 => int 7
從結(jié)果可以看出array_merge_recursive()函數(shù)會(huì)把鍵值相同的值以一個(gè)新的關(guān)聯(lián)數(shù)組的形式返回,并以這個(gè)鍵值作為二維數(shù)組的鍵值,其他索引形式則不會(huì)受影響。
比起array_merge()的話就不會(huì)出現(xiàn)后面的數(shù)組鍵和前一個(gè)相同就把前一個(gè)的值覆蓋的情況了。
2.再看下‘+'號(hào)合并數(shù)組的情況:
$a = array('color'=>'red',5,6);
$b = array('color'=>'blue','type'=>'fruit',6,7);
$arr = $a+$b;
var_dump($arr);
輸出結(jié)果:
array (size=4) 'color' => string 'red' (length=3) 0 => int 5 1 => int 6 'type' => string 'fruit' (length=5)
從這個(gè)結(jié)果可以看出,使用‘+'號(hào)合并數(shù)組,是前面覆蓋后面的,和array_merge()相反,而且它比array_merge()更狠,如果以索引形式出現(xiàn)的數(shù)組的內(nèi)容,合并后如果鍵值相同也會(huì)覆蓋掉!
總結(jié)
好了,以上就是這篇文章的全部內(nèi)容了,是我個(gè)人的一些總結(jié),本人入行不久,火候欠佳,如有總結(jié)不到位地方請(qǐng)各位高手批評(píng)指正,一定虛心接納!
相關(guān)文章
PHP+Redis開發(fā)的書簽案例實(shí)戰(zhàn)詳解
這篇文章主要介紹了PHP+Redis開發(fā)的書簽案例,結(jié)合實(shí)例形式詳細(xì)分析了php結(jié)合redis開發(fā)書簽功能的具體步驟及相關(guān)操作技巧,需要的朋友可以參考下2019-07-07
PHP對(duì)MongoDB[NoSQL]數(shù)據(jù)庫的操作
PHP對(duì)MongoDB[NoSQL]數(shù)據(jù)庫的操作,需要的朋友可以參考一下2013-03-03
PHP進(jìn)制轉(zhuǎn)換實(shí)例分析(2,8,16,36,64進(jìn)制至10進(jìn)制相互轉(zhuǎn)換)
這篇文章主要介紹了PHP進(jìn)制轉(zhuǎn)換,結(jié)合具體實(shí)例形式分析了2,8,16,36,64進(jìn)制至10進(jìn)制相互轉(zhuǎn)換實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
PHP數(shù)組去重的更快實(shí)現(xiàn)方式分析
這篇文章主要介紹了PHP數(shù)組去重的更快實(shí)現(xiàn)方式,結(jié)合實(shí)例形式對(duì)比分析了php實(shí)現(xiàn)數(shù)組去重的各種常見操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-05-05
php 文件上傳后綴名與文件類型對(duì)照表(幾乎涵蓋所有文件)
在這個(gè)過程中會(huì)有一些瀏覽器兼容,更準(zhǔn)確來說是文件類型解析標(biāo)識(shí)不一致的問題。2010-05-05
laravel與thinkphp之間的區(qū)別與優(yōu)缺點(diǎn)
這篇文章主要介紹了laravel與thinkphp之間的區(qū)別與優(yōu)缺點(diǎn),從多個(gè)方面對(duì)比,有正好使用這兩個(gè)框架的同學(xué)可以研究下2021-03-03

