《PHP實(shí)戰(zhàn):php去除數(shù)組中重復(fù)數(shù)據(jù)》要點(diǎn):
本文介紹了PHP實(shí)戰(zhàn):php去除數(shù)組中重復(fù)數(shù)據(jù),希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
廢話不多說(shuō),直接上代碼
PHP教程
代碼如下:
/**
???????? * 給數(shù)組排重
???????? * 與array_unique函數(shù)的區(qū)別:它要求val是字符串,而這個(gè)可以是數(shù)組/對(duì)象
???????? *
???????? * @param unknown_type $arr 要排重的數(shù)組
???????? * @param unknown_type $reserveKey 是否保留原來(lái)的Key
???????? * @return unknown
???????? */
??????? static function m_ArrayUnique($arr, $reserveKey = false)
??????? {
??????????? if (is_array($arr) && !empty($arr))
??????????? {
??????????????? foreach ($arr as $key => $value)
??????????????? {
??????????????????? $tmpArr[$key] = serialize($value) . '';
??????????????? }
??????????????? $tmpArr = array_unique($tmpArr);
??????????????? $arr = array();
??????????????? foreach ($tmpArr as $key => $value)
??????????????? {
??????????????????? if ($reserveKey)
??????????????????? {
??????????????????????? $arr[$key] = unserialize($value);
??????????????????? }
??????????????????? else
??????????????????? {
??????????????????????? $arr[] = unserialize($value);
??????????????????? }
??????????????? }
??????????? }
??????????? return $arr;
??????? }
代碼很簡(jiǎn)單,卻非常的實(shí)用,有需要的小伙伴可以直接拿去用的.PHP教程
另附上其他網(wǎng)友的解決辦法PHP教程
代碼如下:
<?php
$input = array("a" => "green","", "red","b" => "green", "","blue", "red","c" => "witer","hello","witer");
//$result = array_unique($input); //去除重復(fù)元素
$result = a_array_unique($input);?? //只留下單一元素
foreach($result as $aa)
{
echo $aa."<br />";
}
function multi_unique($array) {
?? foreach ($array as $k=>$na)
?????? $new[$k] = serialize($na);
?? $uniq = array_unique($new);
?? foreach($uniq as $k=>$ser)
?????? $new1[$k] = unserialize($ser);
?? return ($new1);
}
function a_array_unique($array)//寫(xiě)的比較好
{
?? $out = array();
?? foreach ($array as $key=>$value) {
?????? if (!in_array($value, $out))
{
?????????? $out[$key] = $value;
?????? }
?? }
?? return $out;
}
?>
PHP教程
PHP數(shù)組去除重復(fù)項(xiàng) 有個(gè)內(nèi)置函數(shù)array_unique (),但是php的 array_unique函數(shù)只適用于一維數(shù)組,對(duì)多維數(shù)組并不適用,以下提供一個(gè)二維數(shù)組 的 array_unique函數(shù)PHP教程
代碼如下:
function unique_arr($array2D,$stkeep=false,$ndformat=true)
{
??? // 判斷是否保留一級(jí)數(shù)組鍵 (一級(jí)數(shù)組鍵可以為非數(shù)字)
??? if($stkeep) $stArr = array_keys($array2D);
??? // 判斷是否保留二級(jí)數(shù)組鍵 (所有二級(jí)數(shù)組鍵必須相同)
??? if($ndformat) $ndArr = array_keys(end($array2D));
??? //降維,也可以用implode,將一維數(shù)組轉(zhuǎn)換為用逗號(hào)連接的字符串
??? foreach ($array2D as $v){
??????? $v = join(",",$v);
??????? $temp[] = $v;
??? }
??? //去掉重復(fù)的字符串,也就是重復(fù)的一維數(shù)組
??? $temp = array_unique($temp);
??? //再將拆開(kāi)的數(shù)組重新組裝
??? foreach ($temp as $k => $v)
??? {
??????? if($stkeep) $k = $stArr[$k];
??????? if($ndformat)
??????? {
??????????? $tempArr = explode(",",$v);
??????????? foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;
??????? }
??????? else $output[$k] = explode(",",$v);
??? }
??? return $output;
}
演示:PHP教程
$array2D = array('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333'));?
print_r($array2D);?
print_r(unique_arr($array2D,true));PHP教程
歡迎參與《PHP實(shí)戰(zhàn):php去除數(shù)組中重復(fù)數(shù)據(jù)》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/14003.html