我想找到一個處理的「地圖」功能的PHP等價物,所以我可以重新映射一個數字從一個範圍到另一個。有什麼事嗎?它被稱爲不同的東西嗎?在php中是否有「地圖」功能?
http://processing.org/reference/map_.html
例如爲一個值映射從0-100至0-9。
map(75, 0, 100, 0, 9);
我想找到一個處理的「地圖」功能的PHP等價物,所以我可以重新映射一個數字從一個範圍到另一個。有什麼事嗎?它被稱爲不同的東西嗎?在php中是否有「地圖」功能?
http://processing.org/reference/map_.html
例如爲一個值映射從0-100至0-9。
map(75, 0, 100, 0, 9);
沒有這樣做沒有原生的功能,但它很容易創建:
function map($value, $low1, $high1, $low2, $high2) {
return ($value/($high1 - $low1)) * ($high2 - $low2) + $low2;
}
這是未經測試,但你應該有希望的想法。
感謝您回答我的主要問題(如果存在本機功能)並提供了一個示例。 –
感謝這個偉大的功能!
我個人會通過添加簡單的錯誤檢查來提高這個功能,以避免被0除,這將使PHP有一個致命的錯誤。
function map($value, $low1, $high1, $low2, $high2) {
if ($low1 == $high1)
return $low1;
return ($value/($high1 - $low1)) * ($high2 - $low2) + $low2;
}
我只想指出這個函數是多麼容易編寫自己。如果事實證明這不是PHP內置的,我會爲你做(如果其他人不先做) – Hubro
這不等於'0 +((75 *(9-0))/ (100-0))'? –
是的,它沒有問題寫自己我只是好奇,如果一個本地函數可用,我一直聽說本地函數總是會比自定義書面函數(當涉及基本算法時)更快。 –