php陣列比對刪除重複,php 刪除陣列重複的值

時間 2022-03-04 18:45:07

1樓:

$arr1 = array(1,2,3,3,4,5,6,7);

$arr2 = array(1,2,3,3,3,4,4,4,5,6,6,7);

$carr1 = array_count_values($arr1);

$carr2 = array_count_values($arr2);

$diff = array();

foreach ($carr2 as $key => $value)  else

$length = $value - $exists;

if ($length > 0)

}print_r($diff);

結果$carr1中數字出現次數

array

([1] => 1

[2] => 1

[3] => 2

[4] => 1

[5] => 1

[6] => 1

[7] => 1

) $carr2中數字出現次數

array

([1] => 1

[2] => 1

[3] => 3

[4] => 3

[5] => 1

[6] => 2

[7] => 1

) 最終結果

array

([0] => 3

[1] => 4

[2] => 4

[3] => 6)

2樓:******丶魂

相比之下, 我的方法更簡便一些, **量也少.

$arr1 = array(1,2,3,3,4,5,6,7);

$arr2 = array(1,2,3,3,3,4,4,4,5,6,6,7);

foreach($arr1 as $k1=>$v1)print_r($arr2);

3樓:匿名使用者

這個演算法比較好理解並且演算法複雜度和記憶體消耗可控最終結果陣列是下標從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++)}}while(1)                    // 去掉陣列2的臨時值並重置下標

print_r($arr2);

4樓:

$arr1 = array(1,2,3,3,4,5,6,7);

$arr2 = array(1,2,3,3,3,4,4,4,5,6,6,7);

$count1 = count($arr1);

$count2 = count($arr2);

if($count1 > $count2)else

$arr3 = array();

$y = 0;

$x = $arr1[$y];

for($i=0;$i<$size;$i++)else

}echo var_dump($arr3);

5樓:匿名使用者

<?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);

$i = 0;

$j = count ( $arr2 );

$result = array ();

while ( $i < $j )

$i ++;

}var_dump($result);

php 刪除陣列重複的值

6樓:博學小趙是吃貨

$arr = array(1,2,4,2,0,9,8,5);//定義一個陣列。

$arr1 = $arr; //定義另一個陣列和上一個陣列一樣。

//迴圈第一個陣列讓後迴圈第二個陣列 用第一個陣列的每個值和第二個陣列比較如果相同就刪除,最後輸出第二個陣列就行了。

for($i = 0;$ifor($j=$i+1;$jif($arr[$i] == $arr[$j])

unset($arr1[$i]);

echo'';

print_r($arr1);

第二 如果允許使用array_uniqe()函式的話,直接array_uniqe(直接寫陣列名就ok)。

在php中可以使用內建函式array_unique()來直接刪除重複元素,也可以使用array_flip()函式來間接刪除重複元素。

1.array_unique()函式

array_unique()函式可以移除陣列中的重複的值,並返回結果陣列;當幾個陣列元素的值相等時,只保留第一個元素,其他的元素被刪除。

**示例:

<?php$result1 = array("a" => "green", "red", "b" => "green", "blue",

"red");var_dump($result1);$result2 = array_unique($result1);var_dump($result2);?>

2.array_flip()函式

array_flip()是反轉陣列鍵和值的函式,它有個特性就是如果陣列中有二個值是一樣的,那麼反轉後會保留最後一個鍵和值,利用這個特性我們用他來間接的實現陣列的去重。

**示例:

<?phpheader("content-type:text/html;

charset=utf-8");$a = array(1, 5, 2, 5, 1, 3, 2, 4, 5);// 輸出原始陣列echo "原始陣列

:";var_dump($a);// 。

通過使用翻轉鍵和值移除重複值$a = array_flip($a);

// 通過再次翻轉鍵和值來恢復陣列元素$a = array_flip($a);// 重新排序陣列鍵$a = array_values($a);// 輸出更新後的陣列echo "更新陣列 :";var_dump($a);?>

擴充套件資料:

在 php 中建立陣列:

在 php 中, array() 函式用於建立陣列:

array();

在 php 中,有三種陣列型別:

索引陣列 - 帶有數字索引的陣列。

關聯陣列 - 帶有指定鍵的陣列。

多維陣列 - 包含一個或多個陣列的陣列。

1、php 索引陣列

有兩種建立索引陣列的方法:

索引是自動分配的(索引從 0 開始):

$cars=array("porsche","bmw","volvo");

或者也可以手動分配索引:

$cars[0]="porsche";

2、遍歷索引陣列:

如需遍歷並輸出索引陣列的所有值,可以使用 for 迴圈,就像這樣:

例項:<?php

$cars=array("porsche","bmw","volvo");

$arrlength=count($cars);

for($x=0;$x<$arrlength;$x++) {

echo $cars[$x];

echo "

";?>

3、多維陣列:

將在 php 高階教程出現多維陣列。

7樓:琴天萬寶

array_unique() 函式定義和用法移除陣列中的重複的值,並返回結果陣列。

當幾個陣列元素的值相等時,只保留第一個元素,其他的元素被刪除。

返回的陣列中鍵名不變。

例子<?php

$a=array("a"=>"cat","b"=>"dog","c"=>"cat");

print_r(array_unique($a));

?>

輸出:array ( [a] => cat [b] => dog )

8樓:清友靈

array_unique 這個函式就搞定了,需要寫那麼多**嗎?

php如何刪除兩個陣列中相同的元素

9樓:匿名使用者

$a=[1,2,3];

$b=[2,3,4];

$c=array_diff($a,$b);//[1]$d=array_merge(array_diff($a,$b),array_diff($b,$a));//[1,4]

var_dump($c,$d);

10樓:ms中文網

首先,我看到這個問題中描述是「如何刪除兩個陣列中相同的元素」,雖然那個人寫了一大堆,竟然用的是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_dump($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_dump($c);

//得到存在於$a但不存在於$b中的元素組成的陣列與存在於$b但不存在於$a中的元素組成的陣列的並集

$d=array_merge(array_diff($a,$b),array_diff($b,$a));

//這裡徹底剔除了同時存在於$a和$b中的元素

var_dump($d);

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

11樓:清風之無痕歲月

<?php

$a=array("第一"=>12,"第二"=>23,34,45);

$b=array("第一"=>11,"第二"=>22,33,45);

foreach ($a as $key=>$v1) }}print_r($a);

print_r($b);

?>

PHP二維陣列如何去掉重複值,php如何去掉二維陣列中重複的元素?

灰哥哥僒巈駥媎 php陣列去除重複項有個內建函式array unique 但是php的array unique函式只適用於一維陣列,對多維陣列並不適用,以下提供一個二維陣列的array unique函式。function array unique fb array2d temp array uniq...

PHP陣列合並,PHP陣列合並

用array merge 進行合併,得到的結果是 array 0 1 2 array 0 test2 1 test3 下面的php文件對這個函式的說明,將一個或多個陣列的單元合併起來,一個陣列中的值附加在前一個陣列的後面。返回作為結果的陣列。如果輸入的陣列中有相同的字串鍵名,則該鍵名後面的值將覆蓋前...

php如何跳轉頁面傳陣列,php 如何定義一個陣列?

後臺 data array 這裡放你查的資訊 echo json encode data 返回一個json資料 前臺處理下就行了 育知同創教育 php跳轉頁面傳陣列的方法 1 將陣列轉化成字串,用特殊字元如 將陣列的元素隔開,用普通的字串引數傳遞 2 使用json方式傳遞引數 解析c 後臺得到的是個...