如何刪除數組中的重複項?如何刪除數組中的重複項?
例如,如果我有以下陣列:
$array = array('1','1','2','3');
我希望它成爲
$array = array('2','3');
,所以我希望它刪除整個值,如果兩個它被發現
如何刪除數組中的重複項?如何刪除數組中的重複項?
例如,如果我有以下陣列:
$array = array('1','1','2','3');
我希望它成爲
$array = array('2','3');
,所以我希望它刪除整個值,如果兩個它被發現
根據PHP版本,這應該在PHP> = 4.0.6的所有版本的工作,因爲它不要求需要PHP> = 5.3匿名函數:
function moreThanOne($val) {
return $val < 2;
}
$a1 = array('1','1','2','3');
print_r(array_keys(array_filter(array_count_values($a1), 'moreThanOne')));
DEMO (更改下拉的PHP版本選擇PHP的版本,您正在使用)
這樣做是因爲:
array_count_values
將遍歷數組併爲每個值創建一個索引,並在每次遇到它時增加索引。array_filter
將採用創建的數組並將其傳遞通過之前定義的moreThanOne
函數,如果它返回false
,鍵/值對將被刪除。array_keys
將丟棄數組的一部分,創建一個數組,其值爲被定義的鍵。最後一步爲您提供一個結果,該結果將刪除原始數組中存在多次的所有值。匿名功能介紹在5.3 – 2013-05-04 09:17:30
好點,所以要修改「不僅僅是PHP 5.4「它將用於PHP 4.0.6」^^ – Jon 2013-05-04 09:19:41
它也可以在4.0.6中工作,也就是當'array_filter'被引入時:) – 2013-05-04 09:23:42
試試看代碼,
<?php
$array = array('1','1','2','3');
foreach($array as $data){
$key= array_keys($array,$data);
if(count($key)>1){
foreach($key as $key2 => $data2){
unset($array[$key2]);
}
}
}
$array=array_values($array);
print_r($array);
?>
輸出
PHP提供了這麼多array functions,你就必須把它們混合起來:
$arr = array_keys(array_filter(array_count_values($arr), function($val) {
return $val === 1;
}));
可以過濾出來使用array_count_values()
:
$array = array('1','1','2','3');
$res = array_keys(array_filter(array_count_values($array), function($freq) {
return $freq == 1;
}));
該函數返回一個包含原始值及其各自頻率的數組;然後你只選擇單個頻率。最終結果是通過檢索密鑰獲得的。
刪除數組中的重複值。
array_unique($array)
$array = array(4, "4", "3", 4, 3, "3");
$result = array_unique($array);
print_r($result);
/*
Array
(
[0] => 4
[2] => 3
)
*/
http://php.net/array_count_values < - 我會嘗試先用這個函數寫東西。它至少計算一個值的使用頻率。很好地鍵入。 – hakre 2013-05-04 08:49:15
退房http://stackoverflow.com/questions/369602/how-to-delete-an-element-from-an-array-in-php – bestprogrammerintheworld 2013-05-04 09:28:28