How to delete duplicates in an array?

前端 未结 5 393
南旧
南旧 2020-12-19 07:36

How can I delete duplicates in array?

For example if I had the following array:

$array = array(\'1\',\'1\',\'2\',\'3\');

I want it

相关标签:
5条回答
  • 2020-12-19 08:20

    PHP offers so many array functions, you just have to combine them:

    $arr = array_keys(array_filter(array_count_values($arr), function($val) {
        return $val === 1;
    }));
    

    Reference: array_keys, array_filter, array_count_values

    DEMO

    0 讨论(0)
  • 2020-12-19 08:26

    Remove duplicate values from an array.

     array_unique($array)
    
     $array = array(4, "4", "3", 4, 3, "3");
     $result = array_unique($array);
     print_r($result);
    
     /*
       Array
       (
          [0] => 4
          [2] => 3
       )
      */
    
    0 讨论(0)
  • 2020-12-19 08:32

    You can filter them out using array_count_values():

    $array = array('1','1','2','3');
    $res = array_keys(array_filter(array_count_values($array), function($freq) {
        return $freq == 1;
    }));
    

    The function returns an array comprising the original values and their respective frequencies; you then pick only the single frequencies. The end result is obtained by retrieving the keys.

    Demo

    0 讨论(0)
  • 2020-12-19 08:33

    Depending on PHP version, this should work in all versions of PHP >= 4.0.6 as it doesn't require anonymous functions that require 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 (Change the PHP version in the drop-down to select the version of PHP you are using)

    This works because:

    1. array_count_values will go through the array and create an index for each value and increment it each time it encounters it again.
    2. array_filter will take the created array and pass it through the moreThanOne function defined earlier, if it returns false, the key/value pair will be removed.
    3. array_keys will discard the value portion of the array creating an array with the values being the keys that were defined. This final step gives you a result that removes all values that existed more than once within the original array.
    0 讨论(0)
  • 2020-12-19 08:33

    Try this code,

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

    Output

        Array ( [0] => 2 [1] => 3 )
    
    0 讨论(0)
提交回复
热议问题