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夜.