php - Change rating numbers to 1 - 5 -


मेरे पास रेटिंग संख्याओं की एक सरणी है।

  array (34, 35, 33, 17, 38, 29, 31, 23)   

मैं चाहता हूँ कि संख्या 1 से 5 (1, 2, 3, 4 या 5) के बीच स्वचालित रूप से एक रेटिंग में बदल जाए।

उदाहरण

  • "38" (उच्चतम संख्या) का दर्ज़ा 5 होना चाहिए
  • "17" (सबसे कम संख्या) चाहिए की रेटिंग 1 है।
  • "31" का शायद 3 का मूल्यांकन होना चाहिए।

    मैं इसे PHP कोड के साथ कैसे गणना करूं? उच्चतम संख्या 35 से अधिक हो सकती है और न्यूनतम 17 से कम हो सकती है।

    आप कोशिश कर रहे हैं संख्याएं 17 और 38 को 1 और 5 के बीच में दर्ज करें, बीच में सभी मूल्यों को दोहराएं। हमें निम्न संख्या में इन संख्याओं का उपयोग करें जहां num श्रेणी से किसी भी संख्या का प्रतिनिधित्व करता है:

      (num-17) नक्शे 17 और 38 से 0 और 21 (num-17) / (21) नक्शे 0 और 21 से 0 और 1 (num-17) / (21) * (4) नक्शे 0 और 1 से 0 और 4 (num-17) ) / (21) * (4) + 1 नक्शे 0 और 4 से 1 और 5   

    PHP कोड:

      फ़ंक्शन mapvaluetorange ($ सरणी, $ a, $ b) {$ map = array (); $ min = मिन ($ सरणी); $ अधिकतम = अधिकतम ($ सरणी); Foreach ($ value as $ value) {$ map [] = array ("old" = & gt; $ value, "new" = & gt; ($ value - $ min) / ($ max - $ min) * ($ b - $ a) + $ a); } वापसी $ नक्शा; } $ map = mapvaluetorange (सरणी (34, 35, 33, 17, 38, 29, 31, 23), 1, 5);   

    आउटपुट:

      int (34) - & gt; फ्लोट (4.2380952380952) इंट (35) - & gt; फ्लोट (4.4285714285714) इंट (33) - & gt; फ्लोट (4.047619047619) इंट (17) - & gt; इंट (1) इंट (38) - & gt; इंट (5) इंट (29) - & gt; फ्लोट (3.2857142857143) इंट (31) - & gt; फ्लोट (3.6666666666667) इंट (23) - & gt; फ्लोट (2.1428571428571)   

    पूर्णांक को गोल करने के लिए गोल फ़ंक्शन का उपयोग करें।

Comments

Popular posts from this blog

Selenium IDE Conditional Statements -

sql - Select count and aggregate, but only unique -

ruby on rails - How to avoid ActionController::InvalidCrossOriginRequest exception? -