Gauging Interest:RFC to add map() function
| From: | Jeremy Curcio | Date: | Wed, 26 Jun 2013 15:20:01 +0000 |
| Subject: | Gauging Interest:RFC to add map() function | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-67884@lists.php.net to get a copy of this message | ||
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.curcio@me.com