2012-06-20 43 views
6

我想找到一個處理的「地圖」功能的PHP等價物,所以我可以重新映射一個數字從一個範圍到另一個。有什麼事嗎?它被稱爲不同的東西嗎?在php中是否有「地圖」功能?

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

例如爲一個值映射從0-100至0-9。

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; 
}