Alex
Alex

Reputation: 9265

find non duplicated item in an array

I have two arrays built from different directories that contain file names stripped of extensions. I want to find the ones that don't make a pair thus I merged the array to obtain the array below. How can I find the only non duplicate item in an array?

Array
(
    [0] => dbbackup_2014.09.03_07_06_27
    [1] => dbbackup_2014.09.03_07_07_08
    [2] => dbbackup_2014.09.03_07_13_33
    [3] => dbbackup_2014.09.03_07_15_24
    [4] => dbbackup_2014.09.03_07_21_57
    [5] => dbbackup_2014.09.03_07_22_11
    [6] => dbbackup_2014.09.03_08_40_35
    [7] => dbbackup_2014.09.03_08_41_36
    [8] => dbbackup_2014.09.03_08_43_38
    [9] => dbbackup_2014.09.04_04_59_08
    [10] => dbbackup_2014.09.03_07_06_27
    [11] => dbbackup_2014.09.03_07_07_08
    [12] => dbbackup_2014.09.03_07_13_33
    [13] => dbbackup_2014.09.03_07_15_24
    [14] => dbbackup_2014.09.03_07_21_57
    [15] => dbbackup_2014.09.03_07_22_11
    [16] => dbbackup_2014.09.03_08_40_35
    [17] => dbbackup_2014.09.03_08_41_36
    [18] => dbbackup_2014.09.03_08_43_38
)

Note: it is [9]

Upvotes: 0

Views: 98

Answers (2)

samir
samir

Reputation: 211

$a = array_flip(array_filter(array_count_values($a),function($item){
    return $item == 1 ? true : false;
}));
print_r($a);

Output

Array
(
    [1] => dbbackup_2014.09.04_04_59_08
)

Ideone

Upvotes: 2

Hanky Panky
Hanky Panky

Reputation: 46900

foreach($array as $data)
{
    $values=explode("_",$data);
    $output[$values[1]]++;
}

foreach($output as $date=>$number)
{
     if($number==1)
     echo $date; 
}

Output:

2014.09.04

Fiddle

Upvotes: 0

Related Questions