1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| $values = array(
1238 => array(4 => 181, 189, 176, 152, 147, 132, 173, 168, 160 ),
1242 => array(4 => 209, 244, 218, 242, 173, 204, 315, 198, 197 ),
1241 => array(4 => 154, 217, 183, 204, 151, 170, 206, 196, 180),
1240 => array(4 => 5, 9, 3, 7, 10, 8, 4, 9, 5)
);
function filterData(array $data, $limit, $return_sums = true)
{
$filtered = array();
array_walk($data,
function($v, $k) use (&$filtered, $limit, $return_sums)
{
if (($sum = array_sum($v)) >= $limit) {
$filtered[$k] = ($return_sums) ? $sum : $v;
}
}
);
return $filtered;
}
$tab_filtre = filterData($values, 300);
asort($tab_filtre); //employer "arsort" pour ordre décroissant
$tab_tri = array_intersect_key($values,$tab_filtre);//PHP 5 >= 5.1.0
$tab_tri = array_replace($tab_filtre,$tab_tri);//PHP 5 >= 5.3.0
echo '<pre>';
print_r($tab_tri);
echo '</pre>'; |