Hello,
I would like to submit an RFC to add a new function to the PHP language. The function would be called "map()". The purpose of this function would be to take an existing value within a range and make it to a corresponding location within a new range.
The map() method would have 5 required parameters, $originalLow, $originalHigh, $newLow, $newHigh, and $value.
map() would be implement the following:
function map($originalLow, $originalHigh, $newLow, $newHigh, $value) {
return $newLow + ($value - $originalLow) * ($newHigh - $newLow) / ($originalHigh- $originalLow);
}
Example:
Let's say we are teachers and are grading final exams. We have a policy that the best score is 100, and the worst score is a 70. Students scored between 55 and 92. We want to easily re-score the exams to be within the new score range, so we would use the new map() function. Let's begin with mapping the lowest score:
$newScore = map(55, 92, 70, 100, 55); //$newScore = 70
If we have all of our scores in an array:
$scores = array(71, 65, 55, 85, 88, 86, 92, 77, 73);
We could use a foreach loop to remap each value:
$newScores = array();
foreach($score as $scores) {
$newScores[] = map(55, 92, 70, 100, $score);
}
var_dump($newScores);
/*
array(9) {
[0]=>
float(82.972972972973)
[1]=>
float(78.108108108108)
[2]=>
int(70)
[3]=>
float(94.324324324324)
[4]=>
float(96.756756756757)
[5]=>
float(95.135135135135)
[6]=>
int(100)
[7]=>
float(87.837837837838)
[8]=>
float(84.594594594595)
}
*/
Just like that, we have the new exam grades that fit our policy, within the proper scale, without having to do any of the messy math ourselves.
While I do recognize that this is somewhat trivial to anyone who knows the proper formula, I feel as though it would serve the PHP community well. Much the same as the pow() or pi() functions do. I appreciate your thoughts on this matter and whether or not this is worth pursuing as an RFC.
Thank you,
Jeremy Curcio
j.cur...@me.com