$i, 'diff' => $unadj[$i] - $trunc[$i]); usort($diff, function($v1,$v2) { return $v2['diff'] > $v1['diff'] ? 1 : -1; }); $adj = $trunc; $nadj = round($scale * (100.0 - array_sum($trunc)), 0); for($i = 0; $i < $nadj; $i++) $adj[$diff[$i]['ix']] += 1 / $scale; return $adj; } $a = array(333, 334, 333); $pcta = pctify($a, 0); echo implode(' ', $pcta) . "\r\n"; $pcta = pctify($a, 1); echo implode(' ', $pcta) . "\r\n"; $b = array(4555, 5445); $pctb = pctify($b, 1); echo implode(' ', $pctb) . "\r\n"; $pctb = pctify($b, 2); echo implode(' ', $pctb) . "\r\n"; $c = array(33333, 33334, 33333); $pctc = pctify($c, 1); echo implode(' ', $pctc) . "\r\n"; $pctc = pctify($c, 2); echo implode(' ', $pctc) . "\r\n"; ?>