2012-06-20 4 views
6

私はある範囲から別の範囲に数値を再マップすることができるように、処理の "マップ"関数に相当するPHPを見つけることを試みています。何か存在しますか?別のものと呼ばれていますか? 0-100 0から9までの値をマップする。例えばphpに "map"関数はありますか?

http://processing.org/reference/map_.html

map(75, 0, 100, 0, 9); 
+2

私は、この機能が自分自身を書くことがどれほど簡単かを指摘したいと思います。それがPHPに組み込まれていないことが判明した場合、私はあなたのためにそれを行うでしょう(誰かがそれを最初にやっていない場合) – Hubro

+3

それは '0 +((75 *(9-0))/ (100-0)) '? –

+0

はい、自分自身を書いても問題はありません。ネイティブ関数が利用できるかどうか不思議でした。ネイティブ関数が常にカスタム記述関数より速いと聞いてきました。 –

答えて

10

あり、これを行うためのネイティブ機能はありませんが、簡単に作成できます:

function map($value, $low1, $high1, $low2, $high2) { 
    return ($value/($high1 - $low1)) * ($high2 - $low2) + $low2; 
} 

これは未テストですが、うまくいけば、アイデアを得る必要があります。

+0

私の主な質問に答えてくれてありがとう(ネイティブ関数が存在する場合)。 –

1

この素晴らしい機能をお寄せいただきありがとうございます。

私は個人的には、単純なエラーチェックを追加することでこの機能を少し改良し、0で割るのを避け、PHPに致命的なエラーが発生するようにします。

function map($value, $low1, $high1, $low2, $high2) { 
    if ($low1 == $high1) 
     return $low1; 

    return ($value/($high1 - $low1)) * ($high2 - $low2) + $low2; 
} 
関連する問題