2008-11-21 6 views

ответ

189

Использование array_unique().

Пример:

$array = array(1, 2, 2, 3); 
$array = array_unique($array); // Array is now (1, 2, 3) 
+13

@Ian - `Обратите внимание, что array_unique() является не предназначен для работы с многоразмерными массивами. ` – 2010-08-19 19:45:55

+13

Вышеупомянутые элементы будут сохранены. Если вы хотите, чтобы они были переиндексированы, добавьте array_values: http://www.php.net/manual/en/function.array-values.php – CodeVirtuoso 2012-01-11 13:48:34

+14

perfect ....... `array_values ​​(array_unique ($ array)) `делает для меня совершенным. Спасибо @Freelancer – 2012-07-26 05:43:33

-1

Я сделал это без использования какой-либо функции.

$arr = array("1", "2", "3", "4", "5", "4", "2", "1"); 

$len = count($arr); 
for ($i = 0; $i < $len; $i++) { 
    $temp = $arr[$i]; 
    $j = $i; 
    for ($k = 0; $k < $len; $k++) { 
    if ($k != $j) { 
     if ($temp == $arr[$k]) { 
     echo $temp."<br>"; 
     $arr[$k]=" "; 
     } 
    } 
    } 
} 

for ($i = 0; $i < $len; $i++) { 
    echo $arr[$i] . " <br><br>"; 
} 
2

explode(",", implode(",", array_unique(explode(",", $YOUR_ARRAY))));

Это будет заботиться о ключевых ассоциаций и сериализации ключи для результирующего нового массива :-)

+1

Что было бы результатом `explode (", "$ YOUR_ARRAY)`, когда `$ YOUR_ARRAY` `array (" 1 "," 2 "," 3 ")`? – kiamlaluno 2010-08-18 12:52:18

+0

@kiamlaluno - :) и ответ: ** Warning: explode() ожидает, что параметр 2 будет строкой, массив указан в ... на линии .... ** – 2015-07-13 13:57:52

3
$array = array("Ram","Thiru","Ram","Thiraviya"); 
$array = array_unique($array); 

Выход:

"Ram", «Тиру», «Тиравия»

4

иногда array_unique() не так, если вы хотите получить уникальные и повторяющиеся элементы ...

$unique=array("","A1","","A2","","A1",""); 
$duplicated=array(); 

foreach($unique as $k=>$v) { 

if(($kt=array_search($v,$unique))!==false and $k!=$kt) 
{ unset($unique[$kt]); $duplicated[]=$v; } 

} 

sort($unique); // optional 
sort($duplicated); // optional 

результаты по

array (0 => '', 1 => 'A1', 2 => 'A2',) /* $unique */ 

array (0 => '', 1 => '', 2 => '', 3 => 'A1',) /* $duplicated */ 
0
$arrDuplicate = array ("","",1,3,"",5); 
foreach(array_unique($arrDuplicate) as $v){ 
    if($v != ""){$arrRemoved = $v; }} 
print_r($arrRemoved); 
21
//Find duplicates 

$arr = array( 
    'unique', 
    'duplicate', 
    'distinct', 
    'justone', 
    'three3', 
    'duplicate', 
    'three3', 
    'three3', 
    'onlyone' 
); 

$unique = array_unique($arr); 
$dupes = array_diff_key($arr, $unique); 
    // array(5=>'duplicate', 6=>'three3' 7=>'three3') 

// count duplicates 

array_count_values($dupes); // array('duplicate'=>1, 'three3'=>2) 
1

Это отличный способ сделать это. Мог бы убедиться, что его выход снова возвращается к массиву. Теперь вы показываете только последнее уникальное значение.

Попробуйте это:

$arrDuplicate = array ("","",1,3,"",5); 

foreach (array_unique($arrDuplicate) as $v){ 
    if($v != "") { $arrRemoved[] = $v; } 
} 
print_r ($arrRemoved); 
0
function arrayUnique($myArray) 
{ 
    $newArray = Array(); 
    if (is_array($myArray)) 
    { 
     foreach($myArray as $key=>$val) 
     { 
      if (is_array($val)) 
      { 
       $val2 = arrayUnique($val); 
      } 
      else 
      { 
       $val2 = $val; 
       $newArray=array_unique($myArray); 
       $newArray=deleteEmpty($newArray); 
       break; 
      } 
      if (!empty($val2)) 
      { 
       $newArray[$key] = $val2; 
      } 
     } 
    } 
    return ($newArray); 
} 

function deleteEmpty($myArray) 
{ 
    $retArray= Array(); 
    foreach($myArray as $key=>$val) 
    { 
     if (($key<>"") && ($val<>"")) 
     { 
      $retArray[$key] = $val; 
     } 
    } 
    return $retArray; 
} 
0

попробовать этот короткий & сладкий код -

$array = array (1,4,2,1,7,4,9,7,5,9); 
$unique = array(); 

foreach($array as $v){ 
    isset($k[$v]) || ($k[$v]=1) && $unique[] = $v; 
    } 

var_dump($unique); 

Выход -

array(6) { 
    [0]=> 
    int(1) 
    [1]=> 
    int(4) 
    [2]=> 
    int(2) 
    [3]=> 
    int(7) 
    [4]=> 
    int(9) 
    [5]=> 
    int(5) 
} 
0

я t можно сделать через функцию i, сделав три функции duplicate, возвращает значения, которые дублируются в массиве. Вторая функция single возвращает только те значения, которые являются единичными, не повторяются в массиве, а третья и полная функция возвращают все значения, но не дублируются, если какое-либо значение равно дублировал преобразовать его выделить

function duplicate($arr){ 
    $duplicate; 
    $count=array_count_values($arr); 
    foreach($arr as $key=>$value){ 
     if($count[$value]>1){ 
      $duplicate[$value]=$value; 
     } 

    } 
    return $duplicate; 

} 
function single($arr){ 
    $single; 
    $count=array_count_values($arr); 
    foreach($arr as $key=>$value){ 
     if($count[$value]==1){ 
      $single[$value]=$value; 
     } 
    } 
    return $single; 
} 
function full($arr,$arry){ 
    $full=$arr+$arry; 
    sort($full); 
    return $full; 

} 

}

0

в зависимости от размера вашего массива, я нашел

$array = array_values(array_flip(array_flip($array))); 

может быть быстрее, чем array_unique.

1

Единственное, что работал для меня:

$array = array_unique($array, SORT_REGULAR); 
0

Функция array_unique сделает это за вас. Вам просто нужно добавить SORT_REGULAR флага:

$items_thread = array_unique($items_thread, SORT_REGULAR); 
0
<?php 
$arr1 = [1,1,2,3,4,5,6,3,1,3,5,3,20];  
print_r(arr_unique($arr1)); 


function arr_unique($arr) { 
    sort($arr); 
    $curr = $arr[0]; 
    $uni_arr[] = $arr[0]; 
    for($i=0; $i<count($arr);$i++){ 
     if($curr != $arr[$i]) { 
     $uni_arr[] = $arr[$i]; 
     $curr = $arr[$i]; 
     } 
    } 
    return $uni_arr; 
} 
5

Используйте array_values(array_unique($array));

array_unique: для уникального массива array_values: для переиндексации

0
if (@!in_array($classified->category,$arr)){   
            $arr[] = $classified->category; 
           ?> 

      <?php } endwhile; wp_reset_query(); ?> 

первого значения времени проверки в массиве и нашли то же значение игнорировать его

2

Мы можем создать такой тип массива, чтобы использовать это последнее значение будет обновляться в столбец или ключевое значение, и мы получим уникальное значение из массива ...

$array = array (1,3,4,2,1,7,4,9,7,5,9); 
    $data=array(); 
    foreach($array as $value){ 

     $data[$value]= $value; 

    } 

    array_keys($data); 
    OR 
    array_values($data); 
0

Для удаления дубликатов значения массива можно использовать Функция array_unique ($ your_array) PHP

0

Удалить дублирующиеся значения из ассоциативного массива в PHP.

$arrDup = Array ('0' => 'aaa-aaa' , 'SKU' => 'aaa-aaa' , '1' => '12/1/1' , 'date' => '12/1/1' , '2' => '1.15' , 'cost' => '1.15'); 

foreach($arrDup as $k => $v){ 
    if(!(isset ($hold[$v]))) 
     $hold[$v]=1; 
    else 
     unset($arrDup[$k]); 
} 

Array ([0] => ааа-ааа [1] => 12/1/1 [2] => 1,15)

0
$result = array(); 
foreach ($array as $key => $value){ 
    if(!in_array($value, $result)) 
    $result[$key]=$value; 
} 
Смежные вопросы