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ù)組的鍵名,保存在一個數(shù)組里面(假設(shè)命名為keyname_Arr);
然后使用一個符號做分隔符(比如‘-’),將二維數(shù)組里面的鍵值拼接成一個字符串,生成一個臨時數(shù)組;
然后使用【array_unique()函數(shù)】比較生成的這個臨時數(shù)組,去掉里面的相同字符串;
然后將去除重復(fù)后的數(shù)組重新組裝成二維數(shù)組:在foreach()里面循環(huán)使用【explode()函數(shù)】,按‘-’分隔符拆分字符串;
同時在foreach()里面對拆分出來的字符串所形成的【新的臨時數(shù)組tempnew】,再使用一個foreach( $tempnew as $tempk =>$tempv),循環(huán)賦值 $output[ $k ][ $keyname_Arr[ $tempk ] ] = tempv ;
最后,$output即是去除重復(fù)后的二維數(shù)組。
來點(diǎn)實(shí)際代碼理解一下
//存儲內(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;
}
}