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

Reply via email to