2012-06-20 14 views
6

मैं प्रोसेसिंग के "मैप" फ़ंक्शन के बराबर PHP खोजने की कोशिश कर रहा हूं, इसलिए मैं एक नंबर से दूसरे नंबर पर एक नंबर फिर से मैप कर सकता हूं। क्या कुछ मौजूद है? क्या इसे कुछ अलग कहा जाता है?क्या php में कोई "map" फ़ंक्शन है?

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

यह untested है, लेकिन आप उम्मीद है कि विचार मिलना चाहिए।

+0

मेरे मुख्य प्रश्न का उत्तर देने के लिए धन्यवाद (यदि कोई मूल कार्य मौजूद है) और एक उदाहरण भी प्रदान किया गया है। –

1

इस महान समारोह के लिए धन्यवाद!

मैं 0 से विभाजित होने से बचने के लिए सरल त्रुटि जांच जोड़कर व्यक्तिगत रूप से थोड़ा सा सुधार करता हूं, जिससे PHP को घातक त्रुटि मिलती है।

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

    return ($value/($high1 - $low1)) * ($high2 - $low2) + $low2; 
}