I suspect there may be a cleaner way of doing this, but it works:
<?php
/*
array arrayPurge(array $array, int $min)
purges values from $array that do not appear at least $min times
*/
function arrayPurge($array, $min)
{
$counts = array_count_values($array);
$counts = array_filter(
$counts,
create_function('$val', 'return($val >= '.$min.');')
);
$output = array();
foreach($array as $key => $val)
{
if(array_key_exists($val, $counts))
{
$output[$key] = $val;
}
}
return($output);
}
// TEST //
$testData = array(
'one',
'two',
'three',
'four',
'two',
'three',
'four',
'three',
'four',
'four',
'five'
);
$testData = arrayPurge($testData, 3);
printf("<pre>%s</pre>\n", print_r($testData, 1));