當前位置:首頁 » 編程語言 » php去除重復數組

php去除重復數組

發布時間: 2022-11-25 05:49:51

1. php數組比對刪除重復

這個演算法比較好理解並且演算法復雜度和內存消耗可控
最終結果數組是下標從0開始重置的,並且2個數組的數字可以亂序排,通用性比較強

<?php
$arr1=array(1,2,3,3,4,5,6,7);
$arr2=array(1,2,3,3,3,4,4,4,5,6,6,7);

$c1=count($arr1);
$c2=count($arr2);

for($x=0;$x<$c1;$x++)
{
for($y=0;$y<$c2;$y++)
{
if($arr1[$x]==$arr2[$y])//每找到一個相等的,就同時把2個數組對應元素都置臨時值
{
$arr2[$y]=-999;
$arr1[$x]=-9999;
}
}
}


while(1)//去掉數組2的臨時值並重置下標
{
$key=array_search(-999,$arr2);
if($key!==false)
array_splice($arr2,$key,1);//不用unset,因為要重置數組下標
else
break;
}
print_r($arr2);

2. php數組去除重復的值

之前寫了一篇關於數組去重的文章,但是僅限於一維數組。下面的函數可以用於二維數組:
//二維數組去掉重復值
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];
大概就這樣啦。
以上回答你滿意么?

3. 移除數組中重復的值

array_unique
(PHP 4 >= 4.0.1, PHP 5, PHP 7)
array_unique — 移除數組中重復的值
說明
array_unique ( array $array [, int $sort_flags = SORT_STRING ] ) : array
array_unique() 接受 array 作為輸入並返回沒有重復值的新數組。
注意鍵名保留不變。array_unique() 先將值作為字元串排序,然後對每個值只保留第一個遇到的鍵名,接著忽略所有後面的鍵名。這並不意味著在未排序的 array 中同一個值的第一個出現的鍵名會被保留。
注意: 當且僅當 (string) $elem1 === (string) $elem2 時兩個單元被認為相同。 例如,字元串表達一樣時,會使用首個元素。
參數
array
輸入的數組。
sort_flags
第二個可選參數sort_flags 可用於修改排序行為:
排序類型標記:
SORT_REGULAR - 按照通常方法比較(不修改類型)
SORT_NUMERIC - 按照數字形式比較
SORT_STRING - 按照字元串形式比較
SORT_LOCALE_STRING - 根據當前的本地化設置,按照字元串比較。
返回值
返回過濾後的數組。
更新日誌
版本 說明
5.2.10 修改回 sort_flags 的默認值為 SORT_STRING。
5.2.9 增加可選選項sort_flags,默認值 SORT_REGULAR。 5.2.9 之前,此函數內部使用 SORT_STRING 排序。
範例
示例 #1 array_unique() 例子
"green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
?>

4. php如何去掉二維數組中重復的元素

PHP數組去除重復項有個內置函數array_unique(),但是php的array_unique函數只適用於一維數組,對多維數組並不適用,不過你可以在二維數組中的值,用array_unique()即可。

比如:

$array = array(array(1,1,2),array(2,3,4,3));

$temp_array = array();
foreach($array as $key=>$value){

$temp_array[$key] = array_unique($value);
}

$array = $temp_array;

5. php如何刪除兩個數組中相同的元素

php如何去除數組中相同的元素
如何去除數組中相同的元素?在php手冊中有這樣寫
array_unique(PHP
4
>=
4.0.1)
array_unique
--
移除數組中重復的值
說明
array
array_unique
(
array
array)
array_unique()
接受
array
作為輸入並返回沒有重復值的新數組。
注意鍵名保留不變。array_unique()
先將值作為字元串排序,然後對每個值只保留第一個遇到的鍵名,接著忽略所有後面的鍵名。這並不意味著在未排序的
array
中同一個值的第一個出現的鍵名會被保留。
注:
當且僅當
(string)
$elem1
===
(string)
$elem2
時兩個單元被認為相同。就是說,當字元串的表達一樣時。
第一個單元將被保留。
例子
1.
array_unique()
例子
?php
$input
=
array
("a"
=

"green",
"red",
"b"
=>
"green",
"blue",
"red");
$result
=
array_unique
($input);
print_r($result);
?>

6. php二維數組去重

方法一:

//二維數組去掉重復值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]['title'] =$array[1]; $temp2[$k]['keywords'] =$array[2]; $temp2[$k]['content'] =$array[3]; } return $temp2;}

7. php 如何去除多維數組指定重復出現的值

array_unique
()
函數用於移除數組中重復的值。如果兩個或更多個數組值相同,只保留第一個值,其他的值被移除。
注意:被保留的數組將保持第一個數組項的鍵名類型

8. 如何正確實現PHP刪除數組重復元素

array_unique
(PHP 4 >= 4.0.1, PHP 5, PHP 7)
array_unique — 移除數組中重復的值

說明

array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )

array_unique() 接受 array 作為輸入並返回沒有重復值的新數組。

注意鍵名保留不變。array_unique() 先將值作為字元串排序,然後對每個值只保留第一個遇到的鍵名,接著忽略所有後面的鍵名。這並不意味著在未排序的 array 中同一個值的第一個出現的鍵名會被保留。

Note: 當且僅當 (string) $elem1 === (string) $elem2 時兩個單元被認為相同。就是說,當字元串的表達一樣時。 第一個單元將被保留。

參數

array

輸入的數組。
sort_flags

The optional second parameter sort_flags may be used to modify the sorting behavior using these values:

Sorting type flags:

SORT_REGULAR - compare items normally (don't change types)

SORT_NUMERIC - compare items numerically

SORT_STRING - compare items as strings

SORT_LOCALE_STRING - compare items as strings, based on the current locale.

返回值

Returns the filtered array.

更新日誌

版本
說明

5.2.10 Changed the default value of sort_flags back to SORT_STRING.
5.2.9 Added the optional sort_flags defaulting to SORT_REGULAR. Prior to 5.2.9, this function used to sort the array with SORT_STRING internally.

範例

Example #1 array_unique() 例子

<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
?>

以上常式會輸出:

Array
(
[a] => green
[0] => red
[1] => blue
)

Example #2 array_unique() 和類型

<?php
$input = array(4, "4", "3", 4, 3, "3");
$result = array_unique($input);
var_mp($result);
?>

以上常式會輸出:

array(2) {
[0] => int(4)
[2] => string(1) "3"
}

參見

array_count_values() - 統計數組中所有的值出現的次數

注釋

Note: Note that array_unique() is not intended to work on multi dimensional arrays.

9. PHP 不重復顯示數組里的值

array_unique函數可以去除重復,例如你的語句可以修改為:
$arr=array_unique(array(1,1,2,1,5,9,9,6,7,8,8));
exit(json_encode($arr));

10. php如何刪除兩個數組中相同的元素

首先,我看到這個問題中描述是「如何刪除兩個數組中相同的元素」,雖然那個人寫了一大堆,竟然用的是array_unique(),從分析到給出的demo一直在解決如何刪除「一個」數組中「重復」的元素。汗!答非所問的答案竟然會被採納。

這里,簡單分析一下提問者的真實意圖,分以下2種情況:

1.現在有2個一維數組, $arr1和$arr2,現在要刪除 $arr1 中存在於 $arr2 的元素。

解決方案:使用array_diff對比返回在 array1 中但是不在 array2 及任何其它參數數組中的值,代碼如下:

<?php
$arr1=array(1,2,3,4);
$arr2=array(2,4);
//這一句即可
$arr1=array_diff($arr1,$arr2);
var_mp($arr1);

2.先聲明一下,我看了lt318025大神給出的答案,他的思維非常活躍,已經分了2種情況。

現在有2個一維數組,$a和$b,即刪除$a中存在於$b的元素,刪除$b中$a存在的元素,組後合並返回。

可是lt318025大神用的PHP版本太高,給出的demo在低版本PHP下運行失敗,這里修正一下:

<?php
$a=array(1,2,3);
$b=array(2,3,4);
//得到存在於$a但不存在於$b中的元素組成的數組
$c=array_diff($a,$b);
//這里簡單求出在$a但不在$b中的元素
var_mp($c);

//得到存在於$a但不存在於$b中的元素組成的數組與存在於$b但不存在於$a中的元素組成的數組的並集
$d=array_merge(array_diff($a,$b),array_diff($b,$a));
//這里徹底剔除了同時存在於$a和$b中的元素
var_mp($d);

究竟是哪一種情況,這需要看提問者的需求了。

熱點內容
手機建行密碼忘記了怎麼辦 發布:2025-01-16 15:45:38 瀏覽:224
易語言視頻播放源碼 發布:2025-01-16 15:39:35 瀏覽:343
肇觀演算法 發布:2025-01-16 15:38:39 瀏覽:610
管家婆找不到加密狗 發布:2025-01-16 15:10:28 瀏覽:308
linux的etcfstab 發布:2025-01-16 15:00:43 瀏覽:364
電腦無法登錄內網伺服器 發布:2025-01-16 15:00:28 瀏覽:575
編譯nasm 發布:2025-01-16 14:54:43 瀏覽:202
編程實戰寶典 發布:2025-01-16 14:53:12 瀏覽:248
ibm伺服器怎麼關閉開機初始化 發布:2025-01-16 14:50:41 瀏覽:66
瀏覽器上傳不了圖片 發布:2025-01-16 14:45:46 瀏覽:600