PHP二維數(shù)組的去重問題解析
更新時間:2011年07月17日 16:41:15 作者:
PHP數(shù)組去除重復(fù)項有個內(nèi)置函數(shù)array_unique(),但是php的array_unique函數(shù)只適用于一維數(shù)組,對多維數(shù)組并不適用,以下提供一個二維數(shù)組的array_unique函數(shù)。
之前寫了一篇關(guān)于數(shù)組去重的文章,但是僅限于一維數(shù)組。下面的函數(shù)可以用于二維數(shù)組:
//二維數(shù)組去掉重復(fù)值
function array_unique_fb($array2D)
{
foreach ($array2D as $v)
{
$v = join(",",$v); //降維,也可以用implode,將一維數(shù)組轉(zhuǎn)換為用逗號連接的字符串
$temp[] = $v;
}
$temp = array_unique($temp); //去掉重復(fù)的字符串,也就是重復(fù)的一維數(shù)組
foreach ($temp as $k => $v)
{
$temp[$k] = explode(",",$v); //再將拆開的數(shù)組重新組裝
}
return $temp;
}
如果你想保留數(shù)組的鍵值,可以用下面的函數(shù):
//二維數(shù)組去掉重復(fù)值 并保留鍵值
function array_unique_fb($array2D)
{
foreach ($array2D as $k=>$v)
{
$v = join(",",$v); //降維,也可以用implode,將一維數(shù)組轉(zhuǎn)換為用逗號連接的字符串
$temp[$k] = $v;
}
$temp = array_unique($temp); //去掉重復(fù)的字符串,也就是重復(fù)的一維數(shù)組
foreach ($temp as $k => $v)
{
$array=explode(",",$v); //再將拆開的數(shù)組重新組裝
$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;
}
大概就這樣啦。
二維數(shù)組去重
<?php
$arr = array(
array('id' => 1,'name' => 'aaa'),
array('id' => 2,'name' => 'bbb'),
array('id' => 3,'name' => 'ccc'),
array('id' => 4,'name' => 'ddd'),
array('id' => 5,'name' => 'ccc'),
array('id' => 6,'name' => 'aaa'),
array('id' => 7,'name' => 'bbb'),
);
function assoc_unique(&$arr, $key)
{
$rAr=array();
for($i=0;$i<count($arr);$i++)
{
if(!isset($rAr[$arr[$i][$key]]))
{
$rAr[$arr[$i][$key]]=$arr[$i];
}
}
$arr=array_values($rAr);
}
assoc_unique(&$arr,'name');
print_r($arr);
?>
復(fù)制代碼 代碼如下:
//二維數(shù)組去掉重復(fù)值
function array_unique_fb($array2D)
{
foreach ($array2D as $v)
{
$v = join(",",$v); //降維,也可以用implode,將一維數(shù)組轉(zhuǎn)換為用逗號連接的字符串
$temp[] = $v;
}
$temp = array_unique($temp); //去掉重復(fù)的字符串,也就是重復(fù)的一維數(shù)組
foreach ($temp as $k => $v)
{
$temp[$k] = explode(",",$v); //再將拆開的數(shù)組重新組裝
}
return $temp;
}
如果你想保留數(shù)組的鍵值,可以用下面的函數(shù):
復(fù)制代碼 代碼如下:
//二維數(shù)組去掉重復(fù)值 并保留鍵值
function array_unique_fb($array2D)
{
foreach ($array2D as $k=>$v)
{
$v = join(",",$v); //降維,也可以用implode,將一維數(shù)組轉(zhuǎn)換為用逗號連接的字符串
$temp[$k] = $v;
}
$temp = array_unique($temp); //去掉重復(fù)的字符串,也就是重復(fù)的一維數(shù)組
foreach ($temp as $k => $v)
{
$array=explode(",",$v); //再將拆開的數(shù)組重新組裝
$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;
}
大概就這樣啦。
二維數(shù)組去重
復(fù)制代碼 代碼如下:
<?php
$arr = array(
array('id' => 1,'name' => 'aaa'),
array('id' => 2,'name' => 'bbb'),
array('id' => 3,'name' => 'ccc'),
array('id' => 4,'name' => 'ddd'),
array('id' => 5,'name' => 'ccc'),
array('id' => 6,'name' => 'aaa'),
array('id' => 7,'name' => 'bbb'),
);
function assoc_unique(&$arr, $key)
{
$rAr=array();
for($i=0;$i<count($arr);$i++)
{
if(!isset($rAr[$arr[$i][$key]]))
{
$rAr[$arr[$i][$key]]=$arr[$i];
}
}
$arr=array_values($rAr);
}
assoc_unique(&$arr,'name');
print_r($arr);
?>
相關(guān)文章
WordPress中重置文章循環(huán)的rewind_posts()函數(shù)講解
這篇文章主要介紹了WordPress中的文章循環(huán)重置函數(shù)rewind_posts()講解,附帶不依賴循環(huán)的single_cat_title()函數(shù)的用法介紹,需要的朋友可以參考下2016-01-01PHP魔術(shù)方法之__call與__callStatic使用方法
這篇文章主要介紹了PHP魔術(shù)方法之__call與__callStatic方法,需要的朋友可以參考下2017-07-07淺析php中三個等號(===)和兩個等號(==)的區(qū)別
以下是對php中三個等號(===)和兩個等號(==)的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下2013-08-08