Hello Jeremy,
On Wed, Jun 26, 2013 at 8:20 AM, Jeremy Curcio <j.cur...@icloud.com> wrote: > 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. > A map() function is normally part of functional programming and as such would cause confusion and likely would not mean what most programmers would assume. See python and JS docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map http://docs.python.org/2/howto/functional.html Yes; we do have array_map; but I still do not assume that this would be a mathematical function. > > 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); > } > I am curious with something that is so easy; why would you want it in core? > > 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 >