$value ){ $bound_array_int_floor[$i] = array( 'floor' => (int) floor( $value ), 'fraction' => $value - floor( $value ), 'index' => $i, ); } return $bound_array_int_floor; } private static function adjust_constrained_array( &$bound_array_int, $adjustment ) { usort( $bound_array_int, array( 'self', 'cmp_desc_fraction' ) ); $start = 0; $end = $adjustment - 1; $length = count( $bound_array_int ); for ( $i = $start; $i <= $end; $i++ ) { $bound_array_int[ $i % $length ]['floor']++; } usort( $bound_array_int, array( 'self', 'cmp_asc_index' ) ); } private static function cmp_desc_fraction( $a, $b ) { if ( $a['fraction'] == $b['fraction'] ) return 0; return $a['fraction'] > $b['fraction'] ? -1 : 1; } private static function cmp_asc_index( $a, $b ) { if ( $a['index'] == $b['index'] ) return 0; return $a['index'] < $b['index'] ? -1 : 1; } }