PHP二維數組如何去掉重複值

PHP數組去除重複項有個內置函數array_unique(),可是php的array_unique函數只適用於一維數組,對多維數組並不適用,如下提供一個二維數組的array_unique函數。

以前寫了一篇關於數組去重的文章,可是僅限於一維數組。下面的函數能夠用於二維數組:

//二維數組去掉重複值
function array_unique_fb($array2D)
{
    foreach ($array2D as $v)
    {
        $v = join(",",$v);  //降維,也能夠用implode,將一維數組轉換爲用逗號鏈接的字符串
           $temp[] = $v;
    }
    
    $temp = array_unique($temp);    //去掉重複的字符串,也就是重複的一維數組
    foreach ($temp as $k => $v)
    {
        $temp[$k] = explode(",",$v);   //再將拆開的數組從新組裝
    }
    return $temp;
}

若是你想保留數組的鍵值,能夠用下面的函數:

//二維數組去掉重複值  並保留鍵值
function array_unique_fb($array2D)
{
    foreach ($array2D as $k=>$v)
    {
        $v = join(",",$v);  //降維,也能夠用implode,將一維數組轉換爲用逗號鏈接的字符串
        $temp[$k] = $v;
    }
    $temp = array_unique($temp);    //去掉重複的字符串,也就是重複的一維數組
    foreach ($temp as $k => $v)
    {
        $array=explode(",",$v);        //再將拆開的數組從新組裝
        $temp2[$k]["id"] =$array[0];   
        $temp2[$k]["litpic"] =$array[1];
        $temp2[$k]["title"] =$array[2];
        $temp2[$k]["address"] =$array[3];
        $temp2[$k]["starttime"] =$array[4];
        $temp2[$k]["endtime"] =$array[5];
        $temp2[$k]["classid"] =$array[6];
        $temp2[$k]["ename"] =$array[7];
    }
    return $temp2;
}
相關文章
相關標籤/搜索