PHP中提供了array_unique函數去除一維數組中的重複項,但是我們實際的項目開發中,從資料庫select查詢出來的數組經常是二維的;
這裡面可能有重複項,這就需要我們自己定義函數進行去除重複項。
思路:
1、首先擷取第二維數組的鍵名,儲存在一個數組裡面(假設命名為keyname_Arr);
2、然後使用一個符號做分隔字元(比如‘-’),將二維數組裡面的索引值拼接成一個字串,產生一個臨時數組;
3、然後使用【array_unique()函數】比較產生的這個臨時數組,去掉裡面的相同字串;
4、然後將去除重複後的數組重新組裝成二維數組:
在foreach()裡面迴圈使用【explode()函數】,按‘-’分隔字元拆分字串;
同時在foreach()裡面對拆分出來的字串所形成的【新的臨時數組tempnew】,再使用一個foreach( $tempnew as $tempk =>$tempv),
迴圈賦值 $output[ $k ][ $keyname_Arr[ $tempk ] ] = tempv ;
6、最後,$output即使去除重複後的二維數組。
來點實際代碼理解一下:
$keyname_Arr= array_keys(end($resource_arr)); //儲存內層數組的鍵名
//使用'-'作為分隔將數組拼接成字串
foreach ($resource_arr as $v){
$v = join("-",$v);
$temp[] = $v;
}
//去掉重複的字串,也就是重複的一維數組
$temp = array_unique($temp);
//再將拆開的數組重新組裝
foreach ($temp as $k => $v)
{
$tempnew = explode("-",$v);//拆分去重之後的字串
foreach($tempnew as $tempkey => $tempval)
$output[$k][$keyname_Arr[$tempkey]] = $tempval;
}
Cion.記載於2016/05/03夜