PHP中提供了array_unique函數(shù)去除一維數(shù)組中的重復(fù)項(xiàng)先誉,但是我們實(shí)際的項(xiàng)目開發(fā)中,從數(shù)據(jù)庫select查詢出來的數(shù)組經(jīng)常是二維的识啦;
這里面可能有重復(fù)項(xiàng)永脓,這就需要我們自己定義函數(shù)進(jìn)行去除重復(fù)項(xiàng)。
思路
首先獲取第二維數(shù)組的鍵名贸宏,保存在一個(gè)數(shù)組里面(假設(shè)命名為keyname_Arr)造寝;
然后使用一個(gè)符號(hào)做分隔符(比如‘-’),將二維數(shù)組里面的鍵值拼接成一個(gè)字符串吭练,生成一個(gè)臨時(shí)數(shù)組诫龙;
然后使用【array_unique()函數(shù)】比較生成的這個(gè)臨時(shí)數(shù)組,去掉里面的相同字符串鲫咽;
然后將去除重復(fù)后的數(shù)組重新組裝成二維數(shù)組:在foreach()里面循環(huán)使用【explode()函數(shù)】签赃,按‘-’分隔符拆分字符串;
同時(shí)在foreach()里面對(duì)拆分出來的字符串所形成的【新的臨時(shí)數(shù)組tempnew】分尸,再使用一個(gè)foreach( $tempnew as $tempk =>$tempv)锦聊,循環(huán)賦值 $output[ $k ][ $keyname_Arr[ $tempk ] ] = tempv ;
最后箩绍,$output即是去除重復(fù)后的二維數(shù)組孔庭。
來點(diǎn)實(shí)際代碼理解一下
//存儲(chǔ)內(nèi)層數(shù)組的鍵名
$keyname_Arr= array_keys(end($resource_arr));
//使用'-'作為分隔將數(shù)組拼接成字符串
foreach ($resource_arr as $v){
$v = join("-", $v);
$temp[] = $v;
}
//去掉重復(fù)的字符串,也就是重復(fù)的一維數(shù)組
$temp = array_unique($temp);
//再將拆開的數(shù)組重新組裝
foreach ($temp as $k => $v){
//拆分去重之后的字符串
$tempnew = explode("-", $v);
foreach($tempnew as $tempkey => $tempval){
$output[$k][$keyname_Arr[$tempkey]] = $tempval;
}
}